SSL/TLS 加密新紀元 - Let's Encrypt

轉自: https://linux.cn/article-6565-1.html


SSL/TLS 加密新紀元 - Let's Encrypt


根據 Let's Encrypt 官方博客消息,Let's Encrypt 服務將在下週(11 月 16 日)正式對外開放。

Let's Encrypt 項目是由互聯網安全研究小組(ISRG,Internet Security Research Group)主導並開發的一個新型數字證書認證機構(CA,Certificate Authority)。該項目旨在開發一個自由且開放的自動化 CA 套件,並向公衆提供相關的證書免費簽發服務以降低安全通訊的財務、技術和教育成本。在過去的一年中,互聯網安全研究小組擬定了 ACME 協議草案,並首次實現了使用該協議的應用套件:服務端 Boulder 和客戶端 letsencrypt

至於爲什麼 Let's Encrypt 讓我們如此激動,以及 HTTPS 協議如何保護我們的通訊請參考淺談 HTTPS 和 SSL/TLS 協議的背景與基礎

Let's Encrypt

Let's Encrypt

(題圖來自:muylinux.com)

ACME 協議

Let's Encrypt 的誕生離不開 ACME(自動證書管理環境(Automated Certificate Management Environment))協議的擬定。

說到 ACME 協議,我們不得不提一下傳統 CA 的認證方式。Let's Encrypt 服務所簽發的證書爲域名認證證書(DV,Domain-validated Certificate),簽發這類證書需要域名所有者完成以下至少一種挑戰(Challenge)以證明自己對域名的所有權:

  • 驗證申請人對域名的 Whois 信息中郵箱的控制權;
  • 驗證申請人對域名的常見管理員郵箱(如以 admin@postmaster@ 開頭的郵箱等)的控制權;
  • 在 DNS 的 TXT 記錄中發佈一條 CA 提供的字符串;
  • 在包含域名的網址中特定路徑發佈一條 CA 提供的字符串。

不難發現,其中最容易實現自動化的一種操作必然爲最後一條,ACME 協議中的 Simple HTTP 認證即是用一種類似的方法對從未簽發過任何證書的域名進行認證。該協議要求在訪問 http://域名/.well-known/acme-challenge/指定字符串 時返回特定的字符串。

然而實現該協議的客戶端 letsencrypt 做了更多——它不僅可以通過 ACME 協議配合服務端 Boulder 的域名進行獨立(standalone)的認證工作,同時還可以自動配置常見的服務器軟件(目前支持 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 的測試證書,注意這個證書不受信任。

要獲取開發版本請直接:

  1. $ git clone https://github.com/letsencrypt/letsencrypt

以下的使用方法摘自 Let's Encrypt 官方網站。

簽發證書

letsencrypt 工具可以協助你處理證書請求和驗證工作。

自動配置 Web 服務器

下面的操作將會自動幫你將新證書配置到 Nginx 和 Apache 中。

  1. $ letsencrypt run

獨立簽發證書

下面的操作將會將新證書置於當前目錄下。

  1. $ letsencrypt -d example.com auth

續簽證書

默認情況下 letsencrypt 工具將協助你跟蹤當前證書的有效期限並在需要時自動幫你續簽。如果需要手動續簽,執行下面的操作。

  1. $ letsencrypt renew --cert-path example-cert.pem

吊銷證書

列出當前託管的證書菜單以吊銷。

  1. $ letsencrypt revoke

你也可以吊銷某一個證書或者屬於某個私鑰的所有證書。

  1. $ letsencrypt revoke --cert-path example-cert.pem
  1. $ letsencrypt revoke --key-path example-key.pem

Docker 化 letsencrypt

如果你不想讓 letsencrypt 自動配置你的 Web 服務器的話,使用 Docker 跑一份獨立的版本將是一個不錯的選擇。你所要做的只是在裝有 Docker 的系統中執行:

  1. $ sudo docker run -it --rm -p 443:443 -p 80:80 --name letsencrypt \
  2. -v "/etc/letsencrypt:/etc/letsencrypt" \
  3. -v "/var/lib/letsencrypt:/var/lib/letsencrypt" \
  4. 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 的介紹就到這裏,讓我們一起目睹這場互聯網的安全革命吧。

原文:https://github.com/vizv 作者: vizv
原創:Linux中國  https://linux.cn/article-6565-1.html
發佈了29 篇原創文章 · 獲贊 27 · 訪問量 53萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章