/ 365วันแห่ง...

[365 วันแห่งโปรแกรม #day74] Let’s Encrypt

หลังจากไม่ได้โพสต์มานาน ไม่มีวี่แววว่าจะกลับมาโพสต์ วันนี้ผมกลับมาละ มาโพสต์บทความเดียวแล้วก็จะไป 5555+ สองสามสัปดาห์ที่ผ่านมาจะพบว่าเว็บ 2bedev.com ของเรานั้นไม่สามารถเข้าได้ บางครั้งก็ขึ้นว่าไม่ secure เรื่องก็มาจากว่าผม config certificate ผิดเว็บ นั่นเอง = =" วันนี้เลยจะเอาประสบการณ์การใช้ SSL certificate มาแชร์กันครับ


ผมเคยเขียนบทความเขียนกับ SSL ไว้แล้วที่ Secure your site ดังนั้นวันนี้จะไม่อธิบายอะไรมาก แต่จะมาแนะนำโครงการนึง ที่เค้าแจก SSL certificate ให้เราใช้กันฟรีๆ นั่นก็คือ Let’s Encrypt

Let’s Encrypt?

Let’s Encrypt is a new Certificate Authority:

It’s free, automated, and open.

ครับ Let’s Encrypt เป็น Certificate Authority หรือที่เราเรียกกันว่า CA ซึ่งทำหน้าที่ออก certificate ให้เราใช้กัน ความต่างของ Let’s Encrypt กับเจ้าอื่นก็คือ มันฟรี!! ฟรีเพราะเขาอยากให้ทุกเว็บไซต์มีการเข้ารหัสข้อมูลเพื่อความปลอดภัย

ด้วยความเป็น CA เจ้าใหม่ ดังนั้นจะยังไม่มี Web Browser เจ้าไหนรองรับ แต่ไม่ต้องเป็นห่วงไปครับ เพราะตอนนี้ Let’s Encrypt นั้นทำ cross-signed กับ IdenTrust เรียบร้อยแล้ว ดังนั้นเราก็สามารถเข้าเว็บได้ตามปกติไม่ต้องกดยอมรับความเสี่ยงอะไร

การใช้งาน

ในขณะที่ผมเขียนบทความนี้ Let’s Encrypt นั้นยังอยู่ในสถานะ Beta แบบต้องมี invite และจะเปิดให้ใช้แบบ Public Beta ในเดือนธันว่าคมนี้ ถ้าไม่เลื่อนอีก ><

หลังจากที่สมัครเข้าใช้ Let’s Encrypt แล้ว ละทะเบียนโดเมนแล้ว Let’s Encrypt จะบอกให้เราไปหา ACME client ผมก็งงสิครับว่ามันคืออะไร ก็ไปไล่ๆ หาข้อมูลว่า ได้ความว่า ACME = Automatic Certificate Management Environment ก็คือระบบจัดการ certificate แบบอัตโนมัติ ซึ่งโครงการ Let’s Encrypt ก็มี client ให้ใช้ด้วย เราก็ทำตามเมลที่เค้าบอกได้เลย ด้านล่างนี้เป็นตัวอย่างคำสั่งนะครับ

> git clone https://github.com/letsencrypt/letsencrypt
> cd letsencrypt
> ./letsencrypt-auto --agree-dev-preview --server https://acme-v01.api.letsencrypt.org/directory auth

หลังจากนั้นมันก็จะให้อ่าน Terms of Use แล้วก็ยืนยัน กรอก email ที่ใช้สมัคร กรอกโดเมนที่ลงทะเบียนไว้ เป็นอันเสร็จพิธี

ข้อควรระวัง

  • ต้องปิด Web Server ก่อนรัน Let’s Encrypt Client ไม่งั้นมันจะบอกให้ปิด แล้วต้องกลับไปกรอกข้อมูลใหม่
  • Let’s Encrypt Client นั้นจะทำการ config web server ให้เองด้วย (เฉพาะ web server ที่รองรับ)
  • Let’s Encrypt Certificate มีอายุแค่ 60 วัน ต้อง renew ใหม่เรื่อยๆ โดยใช้คำสั่งเดิม แนะนำให้ตั้ง crontab ไว้ renew (ในอนาคตอาจจะขยายเวลา)
  • Let’s Encrypt Certificate ไม่ได้เป็น wildcard รองรับแค่แบบไม่มี sub-domain และแบบมี sub-domain เป็น www เท่านั้น (ทาง Let’s Encrypt บอกว่าน่าจะเพียงพอสำหรับช่วงแรก แต่อาจจะขยายให้เป็น wildcard ในอนาคต)

ก็ขอจบบทความแต่เพียงเท่านี้ครับ ><

References

Let’s Encrypt

#‎day74 #365วันแห่งโปรแกรม ‪#‎โครงการ365วันแห่ง‬...