如何在 Amazon Linux/CentOS/RHEL 上透過 Let’s Encrypt 安裝免費 SSL/TLS 憑證

Himphen Hui
Coding Cheatsheet
Published in
5 min readOct 19, 2016
Don’t pay for SSL certs anymore. Just use Let’s Encrypt!!!

安裝 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 git
Clone 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 --debug
Else 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_PATH
SSLEngine 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

更多資料,請到:

https://letsencrypt.readthedocs.org/en/latest/using.html.

--

--

Himphen Hui
Coding Cheatsheet

Collaction 的工程師,我運用我的知識,改變世界,這是我可以做的事,這也是我應該要做的事。