Tag Archive: SSL


โดยปกติแล้ว 1 public IP address (1 TCP port: TCP\443) จะติดตั้ง SSL certificate ได้แค่ใบเดียว เนื่องจากกระบวนการคุยของ HTTPS
1) TCP 3-way handcheck
2) SSL/TLS request
3) HTTP request
ซึ่งจะทำให้ web server ไม่ทราบว่า client ต้องการเช้าเวปไหน จึงจะส่ง certificate ได้แค่ 1 ใบเท่านั้น

แต่จากปัญหาดังกล่าวเมื่อใช้งานกับ web server ที่มีเวปไซต์ในเครื่องจำนวนมาก หรือที่ Apache เรียกว่า virtual host ก็จะมีเพียงเวปไซต์เดียวที่สามารถใช้งาน SSL ได้ ดังนั้นจึงมีการปรับปรุงขึ้นโดยเรียกว่า Server Name Indication (SNI) ซึ่งในขั้นตอนที่ 2 SSL/TLS request จะมีการส่ง host address เช่นเดียวกับ http/1.1 ในขั้นตอนก่อนที่ web server จะส่ง SSL certificate ซึ่งทำให้ web server ทราบได้ว่า client จะใช้เวปไซต์ไหน แล้วจึงเลือกส่ง SSL certificate ให้เหมาะกับ client นั้นๆ ได้

โดยในปัจจุบันทั้ง web server และ browser ก็สนับสนุนการทำงาน SNI กันหมดแล้วครับ

Advertisement

SSL certificate ที่เราใช้งานจะมี attribute ที่บอกว่า cetificate ยังใช้ได้หรือไม่ ก็คือ Certificate Revocation List (หรือ CRL)
CRL_1

โดยทั่วไป CRL จะไม่ถูกใช้งานยกเง้นกรณีที่ต้องการยกเลิก certificate เดิม ทางเจ้าของเวปไซต์หรือคนที่ออก certificate ก็จะสั่งยกเลิก (revoke) certificate โดยการใส่ serial number ของ certificate ที่ยกเลิกไปตาม URL ที่ระบุไว้

รูปข้างล่างผมเปิดไปตาม URL ที่ระบุไว้ใน certifiace คือ http://crl.godaddy.com/gdig2s1-119.crl ก็จะพบ serial number ของ certificate อื่นที่ถูกยกเลิกมารวมอยู่ใน list
CRL_2

จาก post ก่อนโน้น SSL Certificate มีกี่แบบ แตกต่างกันอย่างไร ล่าสุดผมพบว่ามีเวปไซต์ที่ใช้ทั้ง SAN และ Wildcard ได้ในใบเดียวกัน ไม่ใช่คนอื่นไกลเลย แต่เป็นอากู๋ Google เอง

โดยมีรายละเอียดตามด้านล่างครับ
2015-06-13_SAN_&_Wildcard_SSL_1


นอกจากนี้ Google ยังมี Intermediate certificate authorities เป็นของตัวเองอีกด้วย ถ้าออก cert ไม่เยอะจริงไม่คุ้มค่าตั้งเองนะเนี่ย
2015-06-13_SAN_&_Wildcard_SSL_2

ต้องขออ้างถึง SSL หรือ Secure Sockets Layer ซึ่งเป็นโพรโตคอลที่ใช้ในการส่งข้อมูลที่เป็นความลับ โดยใช้เทคนิค asymmetric cryptography และได้นำมาประยุกต์ใช้กับโพรโตคอล HTTP เป็น HTTPS

ซึ่งการทำงานของ HTTPS ตัวเวปเซิร์ฟเวอร์จะบอกว่าถ้าอยากส่งข้อมูลมาหาเวปเซิร์ฟเวอร์ให้เข้ารหัสด้วย public key แบบนี้ ปัญหาคือแล้วเราจะรู้ได้อย่างไรว่า public key ที่บอกมาเป็นของจริง ไม่โดน man-in-the-middle attack ดังนั้นจึงต้องพึ่งใบรับรองหรือ certificate โดยมันจะรับรองว่า public key ที่ใช้เข้ารหัสลับที่เวปต่างๆ กล่าวอ้างนั้นเป็นตัวจริง ส่วนคนที่ออกใบรับรองก็มักเป็นบริษัทใหญ่ๆ โตๆ ซึ่งเค้าจะมี deal กะ Microsoft, Mozilla, และ Google อยู่เพื่อบอกว่าเค้าเป็นคนออกใบรับรองได้นะ

สำหรับชนิดของใบรับรองที่ใช้อยู่ในปัจจุบันมี 4 แบบ

    1) แบบธรรมดา

      ราคาถูกสุด ตั้งแต่หลักร้อยไปหลักพันบาท ใช้ได้แค่เวปเดียว โดเมนเดียว
      SSL_Certificate_01
    2) Wild Card SSL Certificate

      เหมือนคำสั่งใน command line แบบ dir *.* นั่นแหละครับ คือเป็น *.domain.com คือใช้กับ sub domain อะไรก็ได้ของให้ลงท้ายด้วย .domain.com ดูตัวอย่างได้ที่ https://securityalliance.mcafee.com/
      SSL_Certificate_02
    3) Extended Validation SSL Certificate

      หรือ EV SSL นอกเหนือจะใช้เพื่อเข้ารหัสลับแล้วก่อนจะออก certificate ผู้รับรองจะต้องมาตรวจสอบเจ้าของโดเมนด้วยว่า อยู่ที่ไหน ทำธุรกิจจริงหรือเปล่า ซึ่งจะสร้างความน่าเชื่อถือให้กับผู้ใช้งานมากขึ้น เพราะไม่ใช่แค่จ่ายเงินผ่านบัตรเครดิตแล้วจบแบบอื่นๆ ซึ่ง Web browser ที่สนับสนุนจะแสดงสีเขียวในช่อง address bar ครับ ตัวอย่างดูตาม URL ของอินเทอร์เน็ตแบ้งค์กิ้งของธนาคารในบ้านเราได้เลยครับ
      SSL_Certificate_03
    4) SAN SSL Certificate

      ไม่ได้เกี่ยวอะไรกับ Storage Area Network นะครับ แต่มันย่อมาจาก Subject Alternative Name มันจะอยู่กึงกลางระหว่างแบบแรกและแบบที่สองคือสามารถใส่หลายๆ ชื่อได้ แต่ไม่ถึงขั้น unlimited แบบ wild card โดยเราต้องระบุชื่อลงไปว่าจะใช้กับ domain ชื่ออะไรบ้าง ตัวอย่างไปดูได้ที่ https://email.vmware.com ครับ
      SSL_Certificate_04b

บางท่านอาจเข้าใจผิดว่า EV SSL จะมีความแข็งแกร่งกว่า ถอดรหัสยากกว่า แต่ความจริงไม่ใช่ครับ ทั้ง 4 แบบหากความยาวของคีย์เท่ากันก็มีความแข็งแกร่งเท่ากัน ความยาวมากสุดปัจจุบันที่ใช้กันทั่วไปน่าจะ 2,048 บิทนะครับ สามารถใช้เข้ารหัสลับได้เหมือนกัน ป้องกัน man-in-the-middle-attack ได้เหมือนกัน ถ้ามองแค่แง่ความต้องการด้านความปลอดภัยใช้แบบธรรมดาก็ได้ครับ ประหยัดดี (ถ้าอยากประหยัดสุดไม่ต้องซื้อ cert ก็ได้ ใช้เป็น self-signed) แต่หากมองด้านความน่าเชื่อถือ EV SSL ก็จะดีกว่า แต่ถ้าต้องใช้กับหลายเซิร์ฟเวอร์หรือหลายชื่อก็คงต้องดูเรื่องของ SAN กับ Wild Card ครับ

นอกจากนี้ EV SSL สามารถใช้งานร่วมกับ SAN ก็ได้เช่นกันครับ แต่ผมยังหาตัวอย่างเวปที่ใจป้ำไม่เจอเหมือนกัน 😀