Tự Động Gia Hạn Chứng Chỉ SSL Let’s Encrypt (Certbot) – Apache, Debian Qua SSH

Liệt kê tất cả chứng chỉ hiện có

sudo certbot certificates

Liệt kê tất cả site Apache trỏ SSL

grep -Ri "SSLCertificateFile" /etc/apache2/sites-enabled/

Xóa các site trỏ tới không còn dùng

sudo a2dissite

ví dụ

sudo a2dissite postfixadmin-le-ssl.conf
sudo a2dissite webname.site-le-ssl.conf

Test cấu hình Apache

sudo apache2ctl configtest

Nếu báo Syntax OK → Apache sẵn sàng restart.

Nếu còn lỗi → fix từng file .conf bị báo lỗi.

Reload hoặc Restart Apache

sudo systemctl restart apache2

Hoặc nếu chắc chắn config OK, có thể dùng reload:

sudo systemctl reload apache2

Lời khuyên:

  • Luôn chạy apache2ctl configtest trước khi reload/restart.
  • Khi xóa website, xoá luôn SSL config và chứng chỉ bằng certbot delete.
  • Nên kiểm tra lại tất cả site sau mỗi reboot để tránh Apache fail.

Gia hạn tất cả chứng chỉ

sudo certbot renew

Gia hạn một domain cụ thể trên Apache

sudo certbot --apache -d example.com -d www.example.com

--apache để Certbot tự chỉnh VirtualHost SSL.

Thêm nhiều -d nếu bạn có nhiều subdomain.

Kiểm tra systemd timer (mặc định Certbot)

Debian mới thường cài Certbot với systemd timer để tự động gia hạn:

systemctl list-timers | grep certbot

Output sẽ hiển thị khi nào timer chạy, ví dụ:

Thu 2025-09-04 03:15:00 JST 2 days left n/a n/a certbot.timer

Dùng Cronjob gia hạn tự động

Mở crontab cho root:

sudo crontab -e

Thêm dòng sau (chạy lúc 3h sáng hàng ngày, chỉ gia hạn nếu còn <30 ngày):

0 3 * * * certbot renew --quiet

--quiet → không xuất log nếu mọi thứ OK.

certbot renew tự gia hạn tất cả chứng chỉ còn hạn.

Kiểm tra hoạt động tự động

Test dry-run:

sudo certbot renew --dry-run

Nếu chạy OK → cron hoặc systemd timer sẽ hoạt động đúng.

Lưu ý quan trọng

Trước khi timer/cron chạy, Apache phải không có lỗi config. Test bằng:

sudo apache2ctl configtest

Nếu có site trỏ SSL file mất → timer sẽ fail renew.

Khi xóa website, xoá luôn config SSL và chứng chỉ để cron/timer không bị lỗi.

Bình luận

Để lại một bình luận

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *