ACME Shell Tutorial



ACME Shell Tutorial

รู้จัก ACME Shell หรือ acme.sh เป็นเครื่องมือสำหรับออก SSL อัตโนมัติที่เบา เร็ว เพื่อให้ง่ายจะใช้คำว่า acme.sh เป็นหลักในการเขียนบทเรียน

acme.sh คืออะไร?

acme.sh คือโปรแกรมสำหรับออกและต่ออายุใบรับรอง SSL/TLS อัตโนมัติ ผ่านโปรโตคอล ACME (Automatic Certificate Management Environment) ซึ่งเป็นมาตรฐานที่ใช้งานโดยผู้ให้บริการอย่าง Let’s Encrypt, ZeroSSL, Google Public CA และ CA อื่น ๆ อีกมากมาย

จุดเด่นของ acme.sh คือ ทำงานผ่าน Shell script 100%, ไม่มี dependency ที่ซับซ้อน ทำให้ใช้งานได้ดีมากบนเซิร์ฟเวอร์เล็ก ๆ อย่าง Alpine Linux, Docker container, OpenWRT, NAS รวมถึงระบบ production ที่ต้องการความเสถียรและปลอดภัยสูง

จุดเด่นของ acme.sh

1) เบามาก — ไม่มี dependency

ต่างจาก certbot ที่ต้องใช้ Python แต่ acme.sh ใช้เพียง Shell + openssl ติดตั้งง่าย รันได้แทบทุกระบบ

2) รองรับหลาย CA ไม่จำกัดแค่ Let’s Encrypt

หากไม่ได้กำหนด CA server จะได้ค่าเริ่มต้นคือ SSL จะถูกรับรองโดย ZeroSSL

  • ZeroSSL (ค่าเริ่มต้น)
  • Let’s Encrypt
  • Google Public CA
  • Buypass
  • SSL.com
  • Sectigo (บางกรณี)

3) รองรับทุกประเภทของ Domain Challenge

  • HTTP-01
  • DNS-01 (เหมาะสำหรับ Wildcard เช่น *.comscidev.com)
  • TLS-ALPN-01

โดยเฉพาะ DNS-01 ที่ acme.sh รองรับ DNS provider มากกว่า 200 ราย เช่น Cloudflare, Route53, DigitalOcean, Cloudns, Porkbun ฯลฯ

4) Auto renew อัตโนมัติ

acme.sh จะสร้าง cron job ให้อัตโนมัติ ช่วยต่ออายุ cert ก่อนหมดอายุเสมอ

5) เหมาะกับ Container และ Minimal OS

เนื่องจากเป็นสคริปต์เล็ก ๆ จึงเหมาะกับ

  • Docker images
  • Kubernetes
  • Alpine Linux
  • OpenWRT / Mikrotik CHR / Router systems
  • NAS (Synology/QNAP)

ทำไมหลายคนใช้ acme.sh มากกว่า certbot?

หัวข้อacme.shcertbot
ภาษาShell scriptPython
ขนาดเล็กมากใหญ่กว่า
Wildcard (DNS)ง่ายบาง provider ต้อง plugin
รองรับหลาย CA✔️ส่วนใหญ่ Let’s Encrypt
ทำงานบน Alpineดีเยี่ยมต้องลง dependency เยอะ