เมื่อมีการยกเลิกการใช้งานซับโดเมน (Subdomain) หรือย้ายเซิร์ฟเวอร์ออกไปแล้ว หากปล่อยให้ Certbot พยายามต่ออายุใบรับรอง (SSL/TLS Certificate) ต่อไปเรื่อยๆ จะส่งผลให้ระบบแจ้งเตือนข้อผิดพลาด Renewal Failure ทุกครั้งที่สคริปต์อัตโนมัติทำงาน
บทความนี้จะแนะนำขั้นตอนการลบ Certificate ที่ไม่ต้องการอย่างถูกต้อง พร้อมวิธีตรวจสอบความเรียบร้อยของระบบครับ
ทำไมไม่ควรลบไฟล์ Certificate ด้วยคำสั่ง rm โดยตรง?
Certbot มีการเก็บข้อมูลเชื่อมโยงกันในหลายไดเรกทอรี ได้แก่:
/etc/letsencrypt/live/(Symlink ไปยังไฟล์ล่าสุด)/etc/letsencrypt/archive/(ไฟล์ Key และ Certificate จริง)/etc/letsencrypt/renewal/(ไฟล์การตั้งค่าการ Renew)
หากใช้คำสั่ง rm -rf ลบเฉพาะบางโฟลเดอร์ ไฟล์คอนฟิกในการต่ออายุจะยังคงค้างอยู่ และทำให้เกิด Error เมื่อรันคำสั่ง certbot renew
ขั้นตอนการลบ Certificate ด้วย Certbot CLI
1. ตรวจสอบรายชื่อ Certificate ทั้งหมดในระบบ
ก่อนทำการลบ ให้เช็กชื่อของ Certificate (Certificate Name) ที่ต้องการลบด้วยคำสั่ง:
sudo certbot certificates
ตัวอย่างผลลัพธ์:
Found the following certs:
Certificate Name: example.com
Serial Number: 4003...
Domains: example.com www.example.com
Expiry Date: 2026-11-10 12:00:00+00:00 (VALID: 88 days)
Certificate Path: /etc/letsencrypt/live/example.com/fullchain.pem
Private Key Path: /etc/letsencrypt/live/example.com/privkey.pem
Certificate Name: old-subdomain.example.com
Serial Number: 3002...
Domains: old-subdomain.example.com
Expiry Date: 2026-09-01 10:00:00+00:00 (INVALID: EXPIRED)
Certificate Path: /etc/letsencrypt/live/old-subdomain.example.com/fullchain.pem
Private Key Path: /etc/letsencrypt/live/old-subdomain.example.com/privkey.pem
ให้คัดลอกชื่อหลัง Certificate Name: ของโดเมนที่ต้องการลบ (เช่น old-subdomain.example.com)
2. ลบ Certificate ด้วยคำสั่ง certbot delete
ใช้คำสั่ง --cert-name ตามด้วยชื่อ Certificate ที่ได้จากขั้นตอนแรก:
sudo certbot delete --cert-name old-subdomain.example.com
ระบบจะทำการลบไฟล์ทั้งหมดที่เกี่ยวข้อง ทั้ง live, archive และไฟล์การตั้งค่าใน renewal ออกให้อย่างปลอดภัย
3. ทดสอบการต่ออายุใบรับรอง (Dry Run Test)
หลังจากลบเรียบร้อยแล้ว ให้ทดสอบจำลองการต่ออายุใบรับรองของทุกโดเมนที่เหลือในระบบ เพื่อยืนยันว่าไม่มี Error ค้างอยู่:
sudo certbot renew --dry-run
หากตั้งค่าถูกต้อง ระบบจะแสดงผลลัพธ์ว่าทำการข้าม (Skipped) โดเมนที่ยังไม่ถึงกำหนดต่ออายุ และไม่มีรายการที่ล้มเหลว (Failed) อีกต่อไป:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
The following certificates are not due for renewal yet:
/etc/letsencrypt/live/example.com/fullchain.pem expires on 2026-11-10 (skipped)
No renewals were attempted.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
สรุป
การจัดการลบ SSL Certificate ด้วยคำสั่ง sudo certbot delete --cert-name <CERT_NAME> เป็นวิธีที่สะอาดและปลอดภัยที่สุด ช่วยป้องกันไม่ให้ Cron job หรือ Systemd timer ของ Certbot ร้องเรียนข้อผิดพลาดเมื่อถึงรอบการต่ออายุอัตโนมัติครับ
อ่านเพิ่มเติม