acme.sh ติดตั้งและทำความรู้จักโครงสร้างไฟล์
บทที่แล้วเรารู้จักว่า acme.sh คืออะไรและต่างจาก certbot ตรงไหน บทนี้ลงมือติดตั้งจริงบนเซิร์ฟเวอร์ Linux แล้วเปิดฝากระโปรงดูว่ามันทำงานยังไง
ตัวอย่างทั้งหมดในซีรีส์นี้รันบน Ubuntu / Debian แต่ acme.sh ใช้ได้กับทุกดิสโทรที่มี shell กับ curl หรือ wget
เตรียมเครื่องก่อน
ต้องมี curl (หรือ wget), openssl และ socat (ใช้ตอนโหมด standalone ในบทหลัง) ติดตั้งให้ครบ
sudo apt update
sudo apt install -y curl openssl socat cron ca-certificatesgit ไม่จำเป็น แต่ถ้ามีจะช่วยตอนอัปเดต
ติดตั้ง acme.sh
คำสั่งเดียวจบ ใส่อีเมลของคุณแทน you@example.com (ใช้สำหรับลงทะเบียนบัญชีกับ CA และรับอีเมลเตือนใบรับรองใกล้หมดอายุ)
curl https://get.acme.sh | sh -s email=you@example.comถ้าเครื่องไม่มี curl ใช้ wget แทน
wget -O - https://get.acme.sh | sh -s email=you@example.comผลลัพธ์ประมาณนี้
[Sat Sep 6 10:00:00 +07 2026] Installing from online archive.
[Sat Sep 6 10:00:02 +07 2026] Installing to /root/.acme.sh
[Sat Sep 6 10:00:02 +07 2026] Installed to /root/.acme.sh/acme.sh
[Sat Sep 6 10:00:02 +07 2026] Installing alias to '/root/.bashrc'
[Sat Sep 6 10:00:02 +07 2026] OK, Close and reopen your terminal to start using acme.sh
[Sat Sep 6 10:00:02 +07 2026] Installing cron job
[Sat Sep 6 10:00:03 +07 2026] Good, bash is found, so change the shell to bash for cron.
[Sat Sep 6 10:00:03 +07 2026] Install success!เรื่อง
curl | sh: การดึงสคริปต์จากเน็ตมารันทันทีมีความเสี่ยงเสมอ ถ้าอยากตรวจก่อน ให้git clone https://github.com/acmesh-official/acme.sh.gitแล้วอ่านโค้ด จากนั้นcd acme.sh && ./acme.sh --install -m you@example.com
ปิดแล้วเปิดเทอร์มินัลใหม่ หรือสั่ง source ~/.bashrc เพื่อให้ alias acme.sh ใช้งานได้ เช็คเวอร์ชัน
acme.sh --versionhttps://github.com/acmesh-official/acme.sh
v3.1.0การติดตั้งทำอะไรให้บ้าง 3 อย่าง
- คัดลอกตัวเองไป
~/.acme.sh/— โฟลเดอร์นี้คือบ้านของ acme.sh ทั้งสคริปต์ ใบรับรองทุกใบ บัญชี และไฟล์ตั้งค่า อยู่ในนี้หมด - เพิ่ม alias ใน
~/.bashrc— ให้พิมพ์acme.shสั้น ๆ ได้จากทุกที่ แทนที่จะพิมพ์ path เต็ม - ติดตั้ง cron job — บรรทัดเดียวใน crontab ที่รันทุกวันเพื่อต่ออายุใบที่ใกล้หมด ดูได้ด้วย
crontab -l
crontab -l19 0 * * * "/root/.acme.sh"/acme.sh --cron --home "/root/.acme.sh" > /dev/null(เลขนาที/ชั่วโมงสุ่มตอนติดตั้ง จึงไม่ตรงกันทุกเครื่อง)
โครงสร้างใน ~/.acme.sh/
ls ~/.acme.shaccount.conf acme.sh acme.sh.env ca/ http.headeracme.sh— ตัวสคริปต์account.conf— ค่าตั้งส่วนกลาง เช่น อีเมล, CA เริ่มต้น, และ ตัวแปร API ของ DNS ที่เคยใช้ (บทที่ 8)ca/— เก็บ *account key* ของแต่ละ CA ไฟล์นี้สำคัญมาก ถ้าหายต้องลงทะเบียนบัญชีใหม่ (บทที่ 25 เรื่องสำรอง)- พอออกใบรับรองใบแรก จะมีโฟลเดอร์
example.com/เพิ่มมา เก็บคีย์กับใบของโดเมนนั้น
ตั้ง CA เริ่มต้น
ตั้งแต่เวอร์ชัน 3.0 acme.sh ใช้ ZeroSSL เป็น CA เริ่มต้น ซึ่งต้องลงทะเบียนบัญชีก่อนใช้ครั้งแรก ถ้าคุณอยากใช้ Let’s Encrypt (ไม่ต้องลงทะเบียนแยก) ให้ตั้งเป็นค่าเริ่มต้นไปเลย
acme.sh --set-default-ca --server letsencrypt[Sat Sep 6 10:01:00 +07 2026] Changed default CA to: https://acme-v02.api.letsencrypt.org/directoryอยากกลับไปใช้ ZeroSSL เมื่อไหร่ก็ได้
acme.sh --register-account -m you@example.com --server zerossl
acme.sh --set-default-ca --server zerosslรายละเอียดการเลือก CA อยู่ในบทที่ 16
ถอนการติดตั้ง
acme.sh --uninstall # ลบ alias + cron
rm -rf ~/.acme.sh # ลบไฟล์ทั้งหมด (ใบรับรองหายด้วย ระวัง)เรื่องที่คนมักพลาด
- พิมพ์
acme.shแล้ว command not found ยังไม่ได้เปิดเทอร์มินัลใหม่ หรือ shell ไม่ใช่ bash — สั่งsource ~/.bashrcหรือเรียกเต็ม ๆ~/.acme.sh/acme.sh --version - ติดตั้งด้วย
sudoแต่ใช้งานด้วย user ธรรมดา acme.sh จะไปอยู่ที่/root/.acme.shซึ่ง user ธรรมดาเข้าไม่ได้ — เลือกให้ชัดว่าจะใช้ user ไหนแล้วติดตั้งด้วย user นั้น - ลืมติดตั้ง
cron/croniecron job ที่ acme.sh เพิ่มให้จะไม่ทำงาน ใบรับรองก็ไม่ต่ออายุ - ไม่ใส่อีเมลตอนติดตั้ง ใช้งานได้ แต่ Let’s Encrypt จะไม่ส่งเมลเตือนตอนใบใกล้หมด และ ZeroSSL จะออกใบไม่ได้จนกว่าจะลงทะเบียน — ใส่ไปเถอะ
- เข้าใจว่า
~/.acme.sh/เป็นแค่ไฟล์ชั่วคราว ไม่ใช่ นี่คือฐานข้อมูลใบรับรองทั้งหมดของคุณ อย่าลบเล่น และควรสำรอง
สรุป
- ติดตั้งด้วย
curl https://get.acme.sh | sh -s email=you@example.com - ได้มา 3 อย่าง: โฟลเดอร์
~/.acme.sh/, aliasacme.sh, และ cron job ต่ออายุอัตโนมัติ account.confเก็บค่าตั้งส่วนกลาง,ca/เก็บ account key ที่ห้ามทำหาย- CA เริ่มต้นคือ ZeroSSL (ต้องลงทะเบียน) — สั่ง
--set-default-ca --server letsencryptถ้าอยากใช้ Let’s Encrypt
บทถัดไปก่อนออกใบรับรองจริง เราจะทำความเข้าใจว่าโปรโตคอล ACME พิสูจน์ “ความเป็นเจ้าของโดเมน” ยังไง และ challenge ทั้ง 3 แบบต่างกันตรงไหน