ป้ายกำกับ: ผิดจังหวะ

วิธีลบ 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

ตัวอย่างผลลัพธ์

JavaScript

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) อีกต่อไป

JavaScript

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


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