ผู้เขียน: phunsanit

วิธีลบ SSL Certificate ของ Certbot ที่ไม่ได้ใช้งานแล้วอย่างถูกต้องวิธีลบ SSL Certificate ของ Certbot ที่ไม่ได้ใช้งานแล้วอย่างถูกต้อง

เมื่อมีการยกเลิกการใช้งานซับโดเมน (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 ร้องเรียนข้อผิดพลาดเมื่อถึงรอบการต่ออายุอัตโนมัติครับ


อ่านเพิ่มเติม