This guide shows you how to set up automatic renewal for Let’s Encrypt SSL certificates using Certbot and a cron job on your Linux server.
1. Create a Renewal Script
Create a folder for scripts if you haven’t already:
sudo mkdir -p ~/scripts/cronjobs
Create a script named renew_ssl_certificates.sh
in ~/scripts/cronjobs
:
sudo nano ~/scripts/cronjobs/renew_ssl_certificates.sh
Add the following content:
#!/bin/bash
# Script to renew Let's Encrypt certificates and restart Nginx
certbot renew --quiet --post-hook "systemctl reload nginx"
Make the script executable:
chmod +x ~/scripts/cronjobs/renew_ssl_certificates.sh
2. Set Up a Cron Job
Edit the root user’s crontab:
crontab -e
Add this line to run the script at 6am and 11pm daily.
# Certbot renew SSL certificates
0 6,23 * * * /bin/bash /home/admin/scripts/cronjobs/renew_ssl_certificates.sh
If your root user’s home directory isn’t /admin, adjust the path (e.g., /home/youruser/scripts/cronjobs/renew_ssl_certificates.sh
).
3. Test the Script
Run the script manually to ensure it works:
sudo /bin/bash ~/scripts/cronjobs/renew_ssl_certificates.sh
Check certificate expiration dates to confirm renewal:
sudo certbot certificates
Conclusion
- The script only renews certificates within 30 days of expiration, so it’s safe to run twice daily.
- The –post-hook
systemctl reload nginx
ensures Nginx applies the new certificates after renewal.
Now your certificates will renew automatically, keeping your sites secure!
Categories: Server