Let's Encrypt是由EFF、Mozilla基金會、Akamai和Cisco等等許多大公司及非營利組織於2014年共同創立的ISRG組織所成立的數位憑證認證機構,目標是讓提供免費申請並自動更新的憑證服務,推廣及加速全球網站採用HTTPS安全的加密傳輸協定。
Let's Encrypt已在2016年4月正式進入穩定階段,原本在舊版 windows xp 的相容性問題也解決了,需要注意的是,Let's Encrypt簽發的憑證有效期為3個月(90天),也就是說網站每3個月都需要重新更新一次憑證,但我們可以透過 renew script 來定期更新憑證。
ACME (Automated Certificate Management Environment) protocol
在 Let's Encrypt 的 How It Works 有說明實作的原理,是使用了 ACME (Automated Certificate Management Environment) Protocol,但是 Let's Encrypt 實作的是自己的 Automated Certificate Management Environment (ACME),實際上在 IETF 有另一個 ACME spec: IETF ACME,Let's Encrypt 規格文件中並不保證能夠影響 IETF ACME,Let's Encrypt 應該是為了在市場驗證才先提供這樣的服務,未來在 IETF ACME 標準化之後,或許可能會經歷一段相容性的過渡期。
Let's Encrypt 在去年 beta 時還是以 letsencrypt script 提供申請與更新的服務,今年就改以 EFF certbot release 正式版。
certbot
要安裝 certbot 之前,必須先將要申請的 domain name 的 DNS A record 指向到要申請的機器上,例如 named 的設定中,將 testdomain.com.tw 以及 c1.testdomain.com.tw 指向到 211.72.214.209。
# testdomain.zone
@ IN A 211.72.214.209
c1 IN A 211.72.214.209
要安裝 cerbot,就直接在 官網 的下面選擇要安裝的 web server 以及 OS,目前我們是選用 Apache on CentOS 6。
sudo yum install epel-release
wget https://dl.eff.org/certbot-auto
mv certbot-auto certbot
## 如果是 centos 7 則是直接用 yum 安裝 certbot
# yum install certbot
chmod a+x certbot
直接執行 cerbot-auto 可以將 certbot 所有需要的相依性套件都安裝好
./certbot
certbot 支援幾種 plugins:Apache, Webroot, Standalone, Manual, Nginx, 其他 plugins。Standalone 的部分適合機器上沒有 web server daemon 的設定方式,我們可以使用 Apache 或是 Webroot,Apache 或 Nginx 的方式比較簡單,如果是 Webroot 的方式,需要讓 web server 可以存取 .well-known 這個目錄的檔案。
如果只要申請 terdomain.com.tw 這個 domain 的 certificate,只需要執行以下的指令,並依照畫面的問題填寫內容。
./certbot --apache
如果需要一個簽章裡面有多個 sub domain,可以直接在 command line 填寫兩個 domain names。
./certbot --apache -d testdomain.com.tw -d c1.testdomain.com.tw -m test@testdomain.com.tw
可以用 ssltest 檢測 https://www.ssllabs.com/ssltest/analyze.html?d=testdomain.com.tw 憑證的狀態。
檢測結果是 C,ssltest 建議要 disable SSL3,disable RC4 cipher,修改 ssl.conf
SSLProtocol all -SSLv2 -SSLv3
SSLHonorCipherOrder on
SSLCipherSuite ECDH+AESGCM:DH+AESGCM:ECDH+AES256:DH+AES256:ECDH+AES128:DH+AES:ECDH+3DES:DH+3DES:RSA+AESGCM:RSA+AES:RSA+3DES:!aNULL:!MD5:!DSS
然後重新啟動 httpd,再去 ssltest 重新檢測一次,可以達到 Rating A。
Debian 8 安裝程序
安裝 certbot for apache web server & debian 8 (jessie)
sudo apt-get install python-certbot-apache -t jessie-backports
certbot --apache
自動更新 ssl
certbot renew --dry-run
將 certbot 放到 cronjob/systemd
certbot renew --quiet
自動更新
以下指令可測試 cerbot 自動更新是否可以正常運作
./certbot renew --dry-run
將 certbot-auto 移動到 /etc 目錄中,在 crontab 增加一行,每週一凌晨 1:00AM 進行一次 renew。
* 1 * * 1 root /etc/certbot renew --quiet
Rate Limit
Let's Encrypt 在發送簽證有幾個限制,最後兩個是針對開發 ACME client 的限制,可以用 staging environment 替代,就可以避免該限制:
Rate Limits for Let’s Encrypt
在單一簽證上,最多只支援 100 個 names
每週每個 domain 限制只能申請 20 個 certificates
每週每個 FQDN,只能申請 5 個 certificates
每 3 hrs 接受 500 次註冊動作
每週每個 account 只能驗證 300 次
References
申請 Let's Encrypt 免費 SSL 憑證於在 NGINX 伺服器上配置和自動更新教學
沒有留言:
張貼留言