CentOS自動取得及更新Let’s Encrypt SSL憑證

Let’s Encrypt提供二個月免費的SSL憑證讓大家使用,也允許大家自動renew更新,所以我們採用Certbot讓程式配合排程來自動更新憑證安裝 Certbot

yum -y install epel-release mod_ssl certbot

取得憑證 例:我想取得以下blog.hmes.kh.edu.tw主機名稱的憑證,並提供電子郵件信箱供Let’s Encrypt提供後續相關訊息。

certbot certonly --webroot -w /var/www/html -d blog.hmes.kh.edu.tw --email username6@example.com --agree-tos

驗證成功後,相關憑證會在 /etc/letsencrypt/live/blog.hmes.kh.edu.tw/ 下面。

設定 Apache 設定SSL相關設定。

編輯/etc/httpd/conf.d/ssl.conf

vi /etc/httpd/conf.d/ssl.conf

找到 SSLCertificateFile與SSLCertificateKeyFile及SSLCACertificateFile 這三行並修改相關路徑。

SSLCertificateFile /etc/letsencrypt/live/blog.hmes.kh.edu.tw/cert.pem
SSLCertificateKeyFile /etc/letsencrypt/live/blog.hmes.kh.edu.tw/privkey.pem
SSLCACertificateFile /etc/letsencrypt/live/blog.hmes.kh.edu.tw/fullchain.pem

設定完儲存並離開後重新啟動Apache

systemctl restart httpd

建立更新script檔並設定排程自動更新憑證。

vi /root/renew.sh
#!/bin/sh
/usr/bin/certbot renew --quiet --agree-tos --post-hook "systemctl reload httpd"

儲存離開後將renew.sh給予執行權限。

chmod 755 /root/renew.sh

加入排程讓程式每周一上午3點自動更新。

crontab -e
0 3 * * 1 /root/renew.sh > /dev/null 2>&1
參考來源 https://www.harryjee.com/wordpress/centos-8-%E5%AE%89%E8%A3%9Dcertbot%E8%87%AA%E5%8B%95%E5%8F%96%E5%BE%97%E5%8F%8A%E6%9B%B4%E6%96%B0lets-encrypt-ssl%E6%86%91%E8%AD%89/
Protocols h2 h2c http/1.1

這個通訊協定會影響Let’s Encrypt 認證,需將之移除。