Let’s Encrypt คืออะไร

Let’s Encrypt หรือเรียกสั้นๆ ว่า LE (แอลอี) เป็นระบบหน่วยงานออกใบรับรอง (Certification Authority (เซอร์ทิฟิเคชั่น ออโทรริตี้) หรือ CA (ซีเอ)) ที่สามารถใช้งานได้ฟรีและใช้ระบบอัตโนมัติในการจัดการใบรับรองความปลอดภัยสำหรับเว็บไซต์เข้ารหัส โดยผู้ใช้งานจะใช้งานผ่าน client (ไคลแอนต์) ที่มีให้ และมีจุดมุ่งหมายเพื่อสาธารณประโยชน์ ระบบของ LE ให้บริการโดย Internet Security Research Group (อินเตอร์เน็ต ซิเคียวริตี้ รีเซิร์จ กรุ๊ป) หรือ ISRG (ไอเอสอาร์จี)

ใบรับรองที่ออกโดย LE จะมีอายุเพียงแค่ 90 วันเท่านั้น ซึ่งดูเป็นช่วงเวลาที่สั้นสำหรับผู้ดูแลระบบหลายๆคนที่ใช้งานใบรับรองที่มีอายุ1ปี ซึ่งทาง LE ให้เหตุผลในการออกใบรับรองที่มีอายุเพียงแค่ 90 วันไว้ดังนี้

  1. เพื่อลดความเสียหายที่จะเกิดขึ้นหากกุญแจที่ใช้ยืนยันใบรับรองถูกเข้าถึงโดยผู้ไม่ประสงค์ดี กุญแจที่ถูกขโมยไปจะสามารถใช้ได้เพียงในช่วงระยะเวลาสั้นๆเท่านั้น
  2. มันจะกระตุ้นให้ใช้ระบบอัตโนมัติ ซึ่งทำให้การใช้งานสะดวกมากขึ้น การที่พวกเราจะทำให้เว็บไซต์ทั้งหมดนั้นใช้ HTTPS (แฮชทีทีพีเอส) พวกเราไม่สามารถรอให้ผู้ดูแลระบบมาติดตั้งหรือต่ออายุใบรับรองเองได้อยู่ตลอดเวลา ซึ่งถ้าระบบทั้งหมดนั้นเป็นระบบอัตโนมัติ การที่ใบรับรองจะมีอายุการใช้งานสั้นก็ไม่ส่งผลกระทบใดๆ

แต่สำหรับในช่วงเบต้า ทาง LE เน้นย้ำให้ทำการขอใบรับรองใหม่ตั้งแต่ช่วง 60 วัน เพื่อป้องกันข้อผิดพลาดเรื่องเวลาหมดอายุของใบรับรอง เพราะว่า LE’s client นั้นยังไม่เสถียรพอ และอาจจะมีการเปลี่ยนแปลงขั้นตอนหรือวิธีการขอใบรับรองได้ตลอดเวลา ซึ่งถ้ารอจนถึงช่วงที่ใบรับรองหมดอายุอาจจะเกิดปัญหาและทำให้ขอใบรับรองใหม่ไม่ทัน

และในปัจจุบัน ISRG Root CA นั้นยังไม่ได้ถูกบรรจุลงภายในเบราว์เซอร์ใดๆ แต่ทาง LE นั้นใช้การ cross-sign จาก IdenTrust

การขอใบรับรอง

กระบวนการขอใบรับรองจะจัดการผ่านโปรโตคอลที่เรียกว่า Automated Certificate Management Environment (ACME) โดยโปรโตคอลนี้สร้างขึ้นมาเพื่อที่จะทำให้กระบวนการยืนยันโดเมน (Domain Validation) กระทำได้อย่างอัตโนมัติโดยไม่ต้องมีมนุษย์เข้าไปเกี่ยวข้องโดยสิ้นเชิง โดยผู้ใช้ต้องระบุอีเมลและโดเมนที่ต้องการลงไป โดยอีเมลนั้นจะถูกนำไปใช้เป็นบัญชีผู้ใช้สำหรับ ACME server ด้วย

กระบวนการยืนยันโดเมนที่ ACME ใช้จะเรียกว่า Domain Validation with Server Name Indication (DVSNI) การทำงานคร่าวๆจะเป็นดังนี้ ACME server จะขอให้ client สร้างใบรับรองตนเองที่มีข้อมูลจาก server ตนเอง เสร็จแล้ว ACME server จะเชื่อมต่อเข้ามาและตรวจสอบใบรับรอง ถ้าถูกต้องกระบวนการยืนยันโดเมนก็จะเสร็จสมบูรณ์

การขอใบรับรองนั้นแบ่งได้เป็นสองแบบ
1. ขอใบรับรองและติดตั้งอัตโนมัติ จะต้องใช้ apache หรือ nginx โดย LE’s client นั้นจะทำการใช้ HTTP server ที่ตั้งค่าไว้ทำการยืนยันโดเมนเพื่อขอใบรับรองรวมถึงติดตั้งให้กับ HTTP server ที่เปิดอยู่ในทันที แต่ตอนนี้ยังใช้ได้เพียงแค่ apache 2.4 บนระบบปฏิบัติการที่เป็น Debian-based และมี libaugeas0 1.0+ เท่านั้น ส่วน nginx นั้นยังอยู่ในช่วงทดลองจึงยังไม่มีให้ใช้งาน
2. ขอใบรับรองเพียงอย่างเดียว วิธีนี้จะได้ใบรับรองมาเพื่อนำไปติดตั้งด้วยตนเอง โดยจะทำได้ 3 แบบ คือ manual สร้าง server ขึ้นมาเองโดยผู้ใช้, standalone สร้าง server ขึ้นมาใหม่โดย LE’s client และ webroot เป็นการใช้ server ที่เปิดไว้อยู่แล้ว

Let's Encrypt