如何在 Amazon Linux/CentOS/RHEL 上透過 Let’s Encrypt 安裝免費 SSL/TLS 憑證
安裝 Let’s Encrypt
Let’s Encrypt 是由各大科技公司以及非營利團體為了推廣 HTTPS 而贊助的一家免費發佈 SSL 憑證機構。
下載 Let’s Encrypt
首先以 root 身份登入並前往家目錄(home directory):
# sudo su
# cd
假若你並沒先前安裝 git 的話,請使用 yum 安裝 git 並接下來 clone repository:
Install Git if you haven't it:
# yum install gitClone the repository from GitHub:
# git clone https://github.com/letsencrypt/letsencrypt
執行 Let’s Encrypt
現在你將取得最新的 Let’s Encrypt 程式碼,前往「~/letsencrypt」資料夾:
# cd ~/letsencryptIf you are using Amazon Linux, use it:
# ./letsencrypt-auto --debugElse if you are using Centos/RHEL, use it:
# ./letsencrypt-auto
你或可能會見到這段警告提示:No installers are available on your OS yet; try running “letsencrypt-auto certonly” to get a cert you can install manually,那你需要輸入「letsencrypt-auto certonly」進行手動安裝。
注意你已完成安裝的話,則無需繼續以下步驟:
# ./letsencrypt-auto certonly --webroot -w WEBROOT_PATH -d DOMAIN_NAME --renew-by-default --agree-tos
搞定了,你已經取得所需的 SSL 憑證及 public key,接下來需要在 Apache 更改設定才能生效 HTTPS。
Congratulations! Your certificate and chain have been saved at /etc/letsencrypt/live/DOMAIN_NAME/fullchain.pem. Your cert will expire on 2016–03–10. To obtain a new version of the certificate in the future, simply run Let’s Encrypt again.
設定 Apache
不要忘記安裝 Apache SSL 模組,使用 yum 安裝 mod_ssl,所有相關套件也會自動取得:
# yum install mod_ssl
然後編輯 /etc/httpd/conf.d/httpd.conf。
加入以下程式碼在 <VirtualHost *:80> 後方:
<VirtualHost *:443>
ServerName DOMAIN_NAME
DocumentRoot WEBROOT_PATHSSLEngine onSSLCertificateFile /etc/letsencrypt/live/DOMAIN_NAME/cert.pem
SSLCertificateKeyFile /etc/letsencrypt/live/DOMAIN_NAME/privkey.pem
SSLCertificateChainFile /etc/letsencrypt/live/DOMAIN_NAME/chain.pem
SSLCACertificateFile /etc/letsencrypt/live/DOMAIN_NAME/fullchain.pem<Directory WEBROOT_PATH>
AllowOverride All
Order allow,deny
Allow from all
Require all granted
</Directory>
</VirtualHost>
重新啟動 Apache 服務以套用新設定。
# service httpd restart
利用 crontab 執行 Let’s Encrypt
你的 SSL cert 將會 3 個月後到期,當然你可以每三個月手動執行以上指令,可惜工程師是世界上最懶惰的生物,這種事必須交由他們的僕人去做:即是寫一個程式出來吧。
(注意這方法好像不適用於所有人,你應得做足夠的測試才行!)
我們可以建立一個 crontab 工作,首先建立 sslgenerate.sh:
# vim sslgenerate.sh
加入以下程式碼到 sslgenerate.sh:
cd ~/letsencrypt./letsencrypt-auto renewservice httpd restart
建立一個 cron job:
# crontab -e
# 30 2 * * 1 sh ~/sslgenerate.sh
更多資料,請到: