จัดการ SSL Certificate แบบอัตโนมัติด้วย Bash และ Certbot
29-ต.ค.-25
คัมภีร์เทพ IT
การต่ออายุ SSL Certificate แบบ Manual เป็นงานที่ดูน่าเบื่อและเสี่ยงลืมจนเกิด Downtime ได้ง่าย แต่คุณสามารถทำให้กระบวนการนี้เป็นอัตโนมัติได้ด้วย Bash Script และ Certbot บทความนี้จะพาคุณไป จัดการ SSL Certificate แบบอัตโนมัติด้วย Bash และ Certbot เริ่มตั้งแต่การตรวจวันหมดอายุของ SSL ไปจนถึงการตั้ง Cron Job ให้ต่ออายุให้โดยอัตโนมัติ
1. ตรวจสอบวันหมดอายุของ SSL Certificate
ก่อนเริ่มทำระบบต่ออายุ SSL Certificate โดยอัตโนมัติ เรามาสร้าง Script เล็ก ๆ เพื่อตรวจสอบว่า SSL ของคุณจะหมดอายุเมื่อไหร่กันก่อน

- ใช้คำสั่ง openssl เพื่อดึงวันหมดอายุของใบรับรอง SSL
- แปลงข้อมูลเป็นจำนวนวันคงเหลือก่อนหมดอายุ
- แสดงข้อความแจ้งเตือนหาก Certificate กำลังจะหมดอายุในไม่ช้า
ด้วยขั้นตอนนี้ คุณสามารถเฝ้าดูสถานะ SSL ได้โดยไม่ต้องเปิด Browser เข้าไปตรวจสอบเองทุกครั้ง
2. ทำให้การต่ออายุ SSL Certificate เป็นแบบอัตโนมัติ
ต่อไปเราจะตั้งค่าให้ Certbot จัดการต่ออายุ SSL Certificate ให้โดยอัตโนมัติ โดย Certbot เป็นเครื่องมือยอดนิยมที่ช่วยต่ออายุใบรับรอง SSL ได้ง่ายมาก

- certbot จะใช้สำหรับต่ออายุ Certificates
- — quiet — non-interactive จะช่วยทำให้ Script ทำงานแบบอัตโนมัติ โดย Users ไม่ต้องดำเนินการใด ๆ
- — agree-tos — email จะทำการลงทะเบียน Email ของคุณเพื่อรับการแจ้งเตือนการต่ออายุ
ด้วยการตั้งค่านี้ ระบบจะสามารถต่ออายุ SSL ได้โดยไม่ต้องเข้าไปจัดการเองอีกต่อไป
3. Restart Web Server โดยอัตโนมัติหลังต่ออายุ
บาง Web Servers เช่น Nginx หรือ Apache จะต้อง Restart หลังจาก SSL Certificates ถูกต่ออายุ เพื่อให้ Load Certificate ใหม่เข้าระบบ ดังนั้น เราจะแก้ไข Script ใหม่ ดังนี้:

- เรียกคำสั่งต่ออายุ SSL
- เมื่อเสร็จแล้วให้ Restart Nginx (systemctl restart nginx) เพื่อให้ใช้ Certificate ใหม่ทันที
- หากคุณใช้ Apache ก็เพียงแทนที่ nginx ด้วย apache2 (systemctl restart apache2) เท่านั้น
ด้วยวิธีนี้ Website ของคุณจะ Load Certificate ใหม่ให้โดยอัตโนมัติ
4. ตั้งเวลาให้ต่ออายุ SSL อัตโนมัติด้วย Cron Job
เพื่อให้การต่ออายุ SSL ทำงานโดยอัตโนมัติ ให้เพิ่ม Script นี้ลงไปใน Cron Jobs ของระบบ

เพิ่มบรรทัดนี้ เพื่อ Run Script ในทุกสัปดาห์:

- Run Script ทุกวันอาทิตย์เวลา 03:00 น.
- บันทึก Log ไว้ที่ /var/log/ssl_renewal.log เพื่อใช้สำหรับการตรวจสอบในภายหลัง
- ป้องกันปัญหา SSL หมดอายุ โดยที่เราไม่รู้ตัว
5. ทดสอบการทำงานของระบบ Auto-Renewal
เพื่อให้มั่นใจว่าระบบต่ออายุโดยอัตโนมัติ ใช้งานได้จริงหรือไม่ ให้จำลองสถานการณ์ที่ Certificate ใกล้หมดอายุ แล้ว Run คำสั่งต่อไปนี้ดู

หากผลลัพธ์คือ สามารถต่ออายุได้สำเร็จ ก็แปลว่า ระบบอัตโนมัติของคุณตั้งค่าได้ถูกต้องแล้ว
สิ่งที่คุณจะได้จากการตั้งระบบนี้:
- ป้องกันปัญหา SSL หมดอายุและข้อความเตือนด้านความปลอดภัย
- ลดภาระการต่ออายุ Certificate แบบ Manual และความเสี่ยงจากการเกิด Downtime
- ทำให้ระบบของคุณปลอดภัยตลอด 24 ชั่วโมง โดยไม่ต้องลงแรงเพิ่ม
สรุป
และนี่ก็คือ แนวทางจัดการ SSL Certificate แบบอัตโนมัติด้วย Bash และ Certbot ซึ่งมันไม่ได้ซับซ้อนมากมายอย่างที่คิด แต่กลับช่วยป้องกันปัญหาใหญ่ ๆ ได้มากมาย ทั้งเรื่อง Downtime และการสูญเสียความเชื่อมั่นของ Users เมื่อทำเสร็จแล้ว คุณจะได้ระบบที่ปลอดภัยและดูแลตัวเองได้ตลอดเวลา
ที่มา: https://medium.com/
รับตำแหน่งงานไอทีใหม่ๆ ด้วยบริการ IT Job Alert
อัพเดทบทความจากคนวงในสายไอทีทาง LINE ก่อนใคร
อย่าลืมแอดไลน์ @techstarth เป็นเพื่อนนะคะ
บทความล่าสุด

