สวัสดี ครับ
เอาข้อมูลที่ Research ได้มาปันให้ ครับ พอดีเห็นว่า search ในเว็บ google ก็จะเจอแต่ปัญหา TLS - SIP ทำยังไง ? ทำแล้วติดปัญหา Validate Certificate บ้าง ซึ่ง เท่าที่ผมพยายามหาอ่านดู ก็ค่อนข้างจะ Popular มาก บ้างก็ว่า ต้องใช้ Asterisk version นู้น นี่ ถึงจะ Validate certificate ผ่าน อ่ะ ผมได้ความรู้จาก ที่นี้ไปเยอะ ทำอะไรไม่ได้ Search เอาจากใน board โดยเฉพาะจาก K.nuiz ขอบคุณ จริงๆ ครับ
สำหรับคนที่ต้องการ ปรับปรุงให้ Asterisk Sip Server มีความ Secure มากขึ้น มีวิธีการ ดังนี้
**ผมใช้ Asterisk 1.8.16.0 ครับ
-ไปอ่านวิธีการทำ Secre Calling with TLS จาก - - >
https://wiki.asterisk.org/wiki/display/ ... g+Tutorial-ใน link ด้านบนนี้เป็นตัวอย่างที่ เค้านำไปใช้กับ Blink Softphone ซึ่งตัว Softphone ที่เค้าอธิบายมันมีช่องให้ระบุ Certificate files ได้ในตัว softphone เลย แต่สำหรับ คนที่ใช้ Xlite , Eyebeam ละ จะทำยังไง ? อันนี้ก็ไม่อยาก ครับ ให้ทำดังนี้
หลังจากที่ Create Certificate ไฟล์ ตามใน link ด้านบนได้แล้ว เราจะได้ ไฟล์ดังนี้
asterisk.crt
asterisk.csr
asterisk.key
asterisk.pem
korakod.crt
korakod.csr
korakod.key
korakod.pem
ca.cfg
ca.crt < - - เอาตัวนี้ไป Install ที่ Client ( ใน link ด้านบน ฝรั่งเค้าไม่ไ้ด้บอกไว้นะครับ )
ca.key
tmp.cfg
วิธีการติดตั้ง Cerfiticate ที่ Client ใช้วิธีการ ca.crt ไป double click แล้ว install ที่ client ได้เลย , โดย สามารถ ตรวจสอบว่า Certificate ที่เรา add เข้าไปใน windows นั้น มีอะไรได้บ้าง โดยดูได้จาก "certmgr.msc" ที่อยู่ใน C:\WINDOWS\system32 ครับ ( ถ้า add เข้าไปแล้ว ไม่พอใจ ก็ delete ออกได้ )
หลังจาก Add ca.crt เข้าไปแล้ว ให้เปิด Softphone ที่ชอบขึ้นมา ให้เลือก Transport เป็นแบบ TLS แล้วลอง Register ดู ถ้า Register ได้ ก็ ถือว่า ใช้งานได้แล้ว ครับ ให้ลอง โทรดู
ที่นี้ จุดยาก ที่ผิดพลาด กันเสมอๆ นั่นคือ ใน Sip.conf ที่ฝรั่งเค้าสอนวิธีทำไว้นั้น ใช้ได้ทั้งหมด ครับ ยกเว้น ในส่วนของ user ที่เราสร้างขึ้นมา จะต้อง Set ให้ Support กับ Softphone ของที่เราต้องการจะใช้เอง อย่างในกรณีที่ผมใช้ Set ใน Sip.conf เพื่อ ให้มาใช้กับ Xlite ได้ Set ไว้ดังนี้ ครับ
tlsenable=yes
tlsbindaddr=0.0.0.0
tlscertfile=/etc/asterisk/keys/asterisk.pem
tlscafile=/etc/asterisk/keys/ca.crt
tlscipher=ALL
tlsclientmethod=tlsv1
[korakod]
type=peer
host=dynamic
context=local
secret=kod100
disallow=all
allow=gsm
allow=alaw
allow=ulaw
transport=tls
context=local
จุดยากอีก 1 จุด คือ ตอน create SSL ห้ามมั่วนะครับ ข้อมูลต้องตรงกับทีี่มีจริง เช่น hostname ชื่ออะไร จะใช้ เรียกแทนด้วย ip หรือ hostname ( เอาที่ ping เจอจากภายนอกได้ มาใช้ ) เด๋วมันจะ Validate certificate fail
ตัวอย่าง Screenshot ตัวอย่างที่ใ้ช้ได้ต้อง ออกมาประมาณนี่้นะ ครับ
port ที่ client ใช้ connect เข้ามา อันนี้ผมเข้าใจผิดเอง นึกว่าต้องเป็น 5061 เสียอีก จริงๆแล้วจะเป็น port อะไรก็ได้แต่ที่ Asterisk จะต้องเปิด Port5061 ไว้
เช็ค Port5061 ว่า Asterisk เป็นผู้ใช้ จริงหรือไม่
ขณะที่ Client connect เข้ามา ถ้าอยากรู้ว่า เข้ามาทาง Port5061 หรือไม่ ก็ ใช้ wireshark เช็คดูจะได้ดังนี้
ที่ Xlite ต้อง Set ให้เป็น TLS
หลังจาก Register ลองโทรดู ( ถ้า register ไม่ได้ ที่ Asterisk CLI มันจะแจ้งว่า Unknow CA หมายความว่าให้ไปเช็ค SSL ที่สร้างดูใหม่ ครับว่า มีอะไรผิด หรือ ที่ User เรากำหนดอะไรผิด ครับ )
สุดท้าย นี้ ถ้าผมอธิบายอะไรผิด ไปขออภัย นะครับ พอดีผมพึ่งลองใช้ Asterisk กับ ศึกษา Linux เมื่อไม่นานนี้เอง
ขอให้โชคดี คร้าบ