RHEL / CentOS 安裝 Certbot 取得及更新 Let’s Encrypt 憑證

Let’s Encrypt 推出免費 SSL 憑證,讓想使用 SSL 的網站節省不少成本,而且使用 Let’s Encrypt 提供的客戶端申請及 renew 憑證,比起在網上購買更加方便。雖然 Let’s Encrypt 的憑證每次只可以申請 3 個月,但可以使用 crontab 自動 renew 憑證,使用上也是很方便。以下介紹在 RHEL 及 CentOS 7 安裝 Let’s Encrypt 客戶端 Certbot,及使用 Certbot 申請及 renew 憑證 的方法。

1. 安裝 Certbot:

在 CentOS 7 要安裝 Certbot, 只要啟用 EPEL 便可以用 yum 安裝,如果沒有啟動 EPEL Repo, 執行以下指令啟用:

# yum install epel-release -y

然後用 yum 安裝所需套件,以下假設設定 Apache 支援 SSL, 需要安裝 mod_ssl:

# yum install mod_ssl

現在可以安裝 Certbot:

# yum install certbot -y

2. 取得憑證

現在假設要申請 www.mydomain.com 及 mydomain.com 的憑證,先要在 DNS Server 將以上 hostname 指向伺服器的 IP,Let’s Encrypt 也會用 hostname 驗證是否域名持有人,而假設網頁的目錄在 /var/www/html, 可以執行以下指令:

當驗證成功後,SSL 憑證, private key 及 LE chain 會放在 /etc/letsencrypt/live/www.mydomain.com/ 下面。


3. 設定 Apache

開啟檔案 /etc/httpd/conf.d/ssl.conf:

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

找到 SSLCertificateFile, SSLCertificateKeyFile 及 SSLCACertificateFile 這 3 行,這 3 行是分開的,改成這樣:

最後重新啟動 Apache 便會生效:

# systemctl restart httpd

4. 設定自動 renew SSL 憑證

Let’s Encrypt 憑證目前的有效期只有 3 個月,在憑證到期前 1 個月可以 renew以下設定自動 renew 憑證,以下是更新憑證的指令:

以上指令會自動更新所有 SSL 憑證,如果成功更新,會執行 “systemctl reload httpd” 這條指令,讓 apache 重新載入新憑證。

為了日後方便管理,建立一個 renew SSL 的 Shell Script:

# vi /root/renew.sh

加入以下內容:

然後把上面 Shell Script 加入可執行權限及放到 crontab:

# chmod +x /root/renew.sh

加入 crontab

# crontab -e

加入以下一行:

這樣 certbot 便會在每天凌晨 3:00 自動檢查及更新憑證。


Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.