SSL/TLS 加密新紀元 – Lets Encrypt
(題圖來自:muylinux.com)
ACME 協議
Let's Encrypt 的誕生離不開 ACME( 自動證書管理環境 )協議的擬定。
說到 ACME 協議,我們不得不提一下傳統 CA 的認證方式。Let's Encrypt 服務所簽發的證書為 域名認證證書 ,簽發這類證書需要域名所有者完成以下至少一種 挑戰 以證明自己對域名的所有權:
- 驗證申請人對域名的 Whois 信息中郵箱的控制權;
- 驗證申請人對域名的常見管理員郵箱(如以
admin@、postmaster@開頭的郵箱等)的控制權; - 在 DNS 的 TXT 記錄中發布一條 CA 提供的字元串;
- 在包含域名的網址中特定路徑發布一條 CA 提供的字元串。
不難發現,其中最容易實現自動化的一種操作必然為最後一條,ACME 協議中的 Simple HTTP 認證即是用一種類似的方法對從未簽發過任何證書的域名進行認證。該協議要求在訪問 http://域名/.well-known/acme-challenge/指定字元串 時返回特定的字元串。
然而實現該協議的客戶端 letsencrypt 做了更多——它不僅可以通過 ACME 協議配合服務端 Boulder 的域名進行 獨立 的認證工作,同時還可以自動配置常見的伺服器軟體(目前支持 Nginx 和 Apache)以完成認證。
Let's Encrypt 免費證書籤發服務
對於大多數網站管理員來講,想要對自己的 Web 伺服器進行加密需要一筆不小的支出進行證書籤發並且難以配置。根據早些年 SSL Labs 公布的 2010 年互聯網 SSL 調查報告(PDF) 指出超過半數的 Web 伺服器沒能正確使用 Web 伺服器證書,主要的問題有證書不被瀏覽器信任、證書和域名不匹配、證書過期、證書信任鏈沒有正確配置、使用已知有缺陷的協議和演算法等。而且證書過期後的續簽和泄漏後的吊銷仍需進行繁瑣的人工操作。
幸運的是 Let's Encrypt 免費證書籤發服務在經歷了漫長的開發和測試之後終於來臨,在 Let's Encrypt 官方 CA 被廣泛信任之前,IdenTrust 的根證書對 Let's Encrypt 的二級 CA 進行了交叉簽名使得大部分瀏覽器已經信任 Let's Encrypt 簽發的證書。
使用 letsencrypt
由於當前 Let's Encrypt 官方的證書籤發服務還未公開,你只能嘗試開發版本。這個版本會簽發一個 CA 標識為 happy hacker fake CA 的測試證書,注意這個證書不受信任。
要獲取開發版本請直接:
$ git clone https://github.com/letsencrypt/letsencrypt
以下的使用方法摘自 Let's Encrypt 官方網站。
簽發證書
letsencrypt 工具可以協助你處理證書請求和驗證工作。
自動配置 Web 伺服器
下面的操作將會自動幫你將新證書配置到 Nginx 和 Apache 中。
$ letsencrypt run
獨立簽發證書
下面的操作將會將新證書置於當前目錄下。
$ letsencrypt -d example.com auth
續簽證書
默認情況下 letsencrypt 工具將協助你跟蹤當前證書的有效期限並在需要時自動幫你續簽。如果需要手動續簽,執行下面的操作。
$ letsencrypt renew --cert-path example-cert.pem
吊銷證書
列出當前託管的證書菜單以吊銷。
$ letsencrypt revoke
你也可以吊銷某一個證書或者屬於某個私鑰的所有證書。
$ letsencrypt revoke --cert-path example-cert.pem
$ letsencrypt revoke --key-path example-key.pem
Docker 化 letsencrypt
如果你不想讓 letsencrypt 自動配置你的 Web 伺服器的話,使用 Docker 跑一份獨立的版本將是一個不錯的選擇。你所要做的只是在裝有 Docker 的系統中執行:
$ sudo docker run -it --rm -p 443:443 -p 80:80 --name letsencrypt
-v "/etc/letsencrypt:/etc/letsencrypt"
-v "/var/lib/letsencrypt:/var/lib/letsencrypt"
quay.io/letsencrypt/letsencrypt:latest auth
你就可以快速的為自己的 Web 伺服器簽發一個免費而且受信任的 DV 證書啦!
Let's Encrypt 的注意事項
- Let's Encrypt 當前發行的 DV 證書僅能驗證域名的所有權,並不能驗證其所有者身份;
- Let's Encrypt 不像其他 CA 那樣對安全事故有保險賠付;
- Let's Encrypt 目前不提供 Wildcard 證書;
- Let's Encrypt 的有效時間僅為 90 天,逾期需要續簽(可自動續簽)。
對於 Let's Encrypt 的介紹就到這裡,讓我們一起目睹這場互聯網的安全革命吧。
本文轉載來自 Linux 中國: https://github.com/Linux-CN/archive
















