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

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 ~/letsencrypt
If 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 on
SSLCertificateFile /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 renew
service httpd restart

建立一個 cron job:

# crontab -e
# 30 2 * * 1 sh ~/sslgenerate.sh

更多資料,請到:

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

One clap, two clap, three clap, forty?

By clapping more or less, you can signal to us which stories really stand out.