Secure Calling with TLS ?

เรื่องทั่วไปที่ไม่รู้จะโพสต์หรือหาอ่านได้ในกระทู้ไหน หรือเรื่องที่อยากให้ผมเขียน

Moderator: jubjang

Secure Calling with TLS ?

โพสต์โดย Korakod » 12 ก.ย. 2012 19:05

K.nuiz หรือ ใครก็ได้ นะครับ ขอคำปรึกษาหน่อย

พอดีงานของผมคือ ต้องสร้าง Sip Server ที่เป็นแบบ TLS เพื่อให้ Programmer เขียน code ให้เข้าไป Register ในแบบ TLS ให้ได้นะครับ ตอนนี้ มี Asterisk 1.6.2.6 ที่พร้อมใช้งาน ในแบบปกติ แล้ว แต่ต้องการปรับให้เป็นแบบ TLS ครับ

พอดีผม search เจอวิธีการ Secure Calling จาก - - > https://wiki.asterisk.org/wiki/display/ ... g+Tutorial

ผมหา script คำสั่ง "ast_tls_cert" ที่อยู่ใน contrib/scripts ของ link ด้านบน ไม่เจอใน Asterisk 1.6.2.6 ไม่เจอ ครับ ไม่ทราบว่า ผมควรจะทำยังไง ? ครับ

ขอบคุณ ครับ
Korakod
Silver Member
 
โพสต์: 33
ลงทะเบียนเมื่อ: 19 เม.ย. 2012 09:44

Re: Secure Calling with TLS ?

โพสต์โดย Korakod » 14 ก.ย. 2012 20:05

update นิดนึง ตอนนี้ ผม ปรับไปใช้ Asterisk 11.0.0-Beta1 แล้ว นะครับ ( พอดีเห็นว่า มี "ast_tls_cert" ที่อยู่ใน contrib/scripts , แล้วพึ่งมาอ่านเจอ ว่า Asterisk V1.8 ก็มี แต่ต้อง download มาใช้เอง = =" โง่จริงเรา ) ใครสนใจ จะติดตั้งก็ ตามไปดูที่ - - > http://www.kartook.com/2012/08/how-to-i ... entos-6-2/


ตัวอย่าง การทำ Secure Calling ที่ผมลองทำดูเอง ได้ผลดังนี้ ครับ ( รบกวนช่วยเช็คให้ผมหน่อย ผมทำไปแบบ งูๆ ปลาๆ ไม่แน่ใจว่า ถูกต้องแล้วหรือยังนะครับ )

1.ปรับ Port ของ Asterisk ให้ รองรับ TCP 5061
รูปภาพ

2.Check port ตอนที่ user register เข้ามาแล้วว่า ได้เป็น port 5061 ตามที่กำหนดไว้
รูปภาพ

3.ใช้ wireshark มา monitor ดูในขณะที่ client คุยกับ server ว่าได้เป็น TLS
รูปภาพ

ส่วนอันนี้ เป็น Blink Softphone ที่ผมนำมาใช้ทดสอบ ครับ พอดีเห็นว่า มีช่องให้ใส่ ข้่อมูล SSL

รูปภาพ

รูปภาพ

รูปภาพ


รบกวนสอบถามเพิ่มเติมหน่อย ครับ

1.ที่ผมแสดงไ้ว้ด้านบนนี้ อันนี้ถือว่า Sip Server ของผม และ Client ทำงานแบบ TLS ถูกต้องแล้วหรือยัง ครับ ?

2.ถ้าหา ไม่ใช้ Softphone ที่มีช่องใส่ Certificates ".pem" คือ จะไปใช้ X-lite ผมไม่แน่ใจว่า จำเป็นต้อง ทำ Sip Proxy ขึ้นมาเป็นตัวกลางสำหรับ ให้ client ใช้ พิสูจต์ตัวตน แทนการ Add Cert files ใช่หรือไม่ครับ ?

พอมีข้อมุลตรงไหนให้ผม ไปศึกษา เองบ้างไหม ครับ ? ขอเป็น link ก็ได้

ขอบคุณ ครับ
Korakod
Silver Member
 
โพสต์: 33
ลงทะเบียนเมื่อ: 19 เม.ย. 2012 09:44

Re: Secure Calling with TLS ?

โพสต์โดย Korakod » 18 ก.ย. 2012 19:29

สวัสดี ครับ

เนื่องจาก ผมยังติดปัญหา Softphone ที่ไม่มี section สำหรับ Certificate fils อย่างเช่น X-lite จะใช้ TLS ได้ยังไง

พอดี หาข้อมูลและลองทำเองมาบ้างแล้ว และ กลับมา post update ข้อมุลที่ได้มา + ปัญหาที่ยังหาวิธีแก้ไขเองไม่ได้ เผื่อว่าปัญหาที่ผมติดอยู่ จะมีคนเคยเจอมาก่อนบ้าง นะครับ

ตอนนี้ ติดปัญหา Certificate Validate faile ตลอดทุกครั้งที่ Connect เข้ามาที่ Sip Server ซึ่งปัญหานี้เท่าที่ reserch ก็พบว่าเป็นปัญหาที่ very popular มาก ครับ

ขอนุญาติ ยกตัวอย่าง วิธีที่ผม นำมาปรับใช้ ในส่วนข้างล่างนะครับ

อ้างอิง ข้อมูลวิธี Create SSL จาก - - > https://wiki.asterisk.org/wiki/display/ ... g+Tutorial ซึ่งผมคิดว่าน่าจะเป็น วิธีการ create SSL ที่เชื่อถือได้ว่าถูกต้องแน่นอน

Certificate files ทั้งฝั่ง Server และ ของ Client ที่ Create ได้มีดังนี้

asterisk.crt
asterisk.csr
asterisk.key
asterisk.pem
korakod.crt
korakod.csr
korakod.key
korakod.pem
ca.cfg
ca.crt
ca.key
tmp.cfg

วิธีการติดตั้ง Cerfiticate ที่ Client ใช้วิธีการ นำ asterisk.crt, korakod.crt, และ ca.crt ไป double click แล้ว install ที่ client ได้เลย โดย สามารถ ตรวจสอบว่า Certificate ที่เรา add เข้าไปใน windows นั้น มีอะไรได้บ้าง โดยดูได้จาก "certmgr.msc" ที่อยู่ใน C:\WINDOWS\system32 ครับ

หลังจาก ติดตั้ง Certificate ที่ Client แล้ว ทดสอบ register softphone โดยเลือกแบบ TLS จะได้ผลลัพธ์ปัจจุบัน เป็นดังนี้

ภาพล่าง - แสดง connection ระหว่าง Softphone xlite ( IP: 192.168.0.26 ) ติดต่อไปทาง port 5061 ( TLS ) ของ Asterisk Server จะเห็นได้ว่า connection ทั้ง 2 ฝั่งสามารถติดต่อปกติ ( ผมดู process ไม่ค่อยเป็นนะ ครับ พอดีเห็น ว่า client และ server กลัง Say hello และ มี done อยู่เลยเข้าใจว่า น่าจะ ok หรือถ้าผมเข้าใจผิด ช่วยบอกผมด้วยนะ ครับ )

รูปภาพ

ภาพล่าง - ในส่วนของ command shell ของ asterisk ยังเป็นปัญหาอยู่ ครับ โดยพบว่าทุกครั้งที่ Softphone connect เข้ามาในแบบ TLS จะมี message แจ้งว่า "tlsv1 alert unknow ca" ตลอด นั่นก็หมายความว่า Softphone ยัง register ในแบบ TLS ไม่ได้ ครับ
รูปภาพ


พอมีใคร เคยเจอปัญหา ด้านบนนี้ บ้้างไหม ? ครับ
Korakod
Silver Member
 
โพสต์: 33
ลงทะเบียนเมื่อ: 19 เม.ย. 2012 09:44

Re: Secure Calling with TLS ?

โพสต์โดย Korakod » 19 ก.ย. 2012 15:34

;) แวะเข้ามา update ครับ ตอนนี้ ทำให้ Support TLS ได้แล้ว เดี่ยวผมจะ สรุป วิธี ให้ ครับ เผื่อว่าจะมีใครสนใจนำไปทำบ้าง
Korakod
Silver Member
 
โพสต์: 33
ลงทะเบียนเมื่อ: 19 เม.ย. 2012 09:44

Re: Secure Calling with TLS ?

โพสต์โดย Korakod » 19 ก.ย. 2012 16:36

สวัสดี ครับ

เอาข้อมูลที่ Research ได้มาปันให้ ครับ พอดีเห็นว่า search ในเว็บ google ก็จะเจอแต่ปัญหา TLS - SIP ทำยังไง ? ทำแล้วติดปัญหา Validate Certificate บ้าง ซึ่ง เท่าที่ผมพยายามหาอ่านดู ก็ค่อนข้างจะ Popular มาก บ้างก็ว่า ต้องใช้ Asterisk version นู้น นี่ ถึงจะ Validate certificate ผ่าน อ่ะ ผมได้ความรู้จาก ที่นี้ไปเยอะ ทำอะไรไม่ได้ Search เอาจากใน board โดยเฉพาะจาก K.nuiz ขอบคุณ จริงๆ ครับ :D

สำหรับคนที่ต้องการ ปรับปรุงให้ 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 เมื่อไม่นานนี้เอง

ขอให้โชคดี คร้าบ :lol:
Korakod
Silver Member
 
โพสต์: 33
ลงทะเบียนเมื่อ: 19 เม.ย. 2012 09:44


ย้อนกลับไปยัง กระทู้ทั่วไป - ฝากคำถาม

ผู้ใช้งานขณะนี้

่กำลังดูบอร์ดนี้: ไม่มีสมาชิกใหม่ และ บุคคลทั่วไป 1 ท่าน