使用 Let's Encrypt 保護你的網站

Carla Schroder發表於2018-04-23

未加密的 HTTP 會話暴露於濫用之中,用 Let's Encrypt 把它們保護起來。

曾幾何時,透過證書授權機構搭建基本的 HTTPS 網站需要每年花費數百美元,而且搭建的過程複雜且容易出錯。現在我們免費使用 Let's Encrypt,而且搭建過程也只需要幾分鐘。

為何進行加密?

為什麼要加密網站呢?這是因為未經加密的 HTTP 會話可以被多種方式濫用:

網路服務提供商就是最大的程式碼注入者。那麼如何挫敗它們的非法行徑呢?你最好的防禦手段就是 HTTPS。讓我們回顧一下 HTTPS 的工作原理。

信任鏈

你可以在你的網站和每個授權訪問使用者之間建立非對稱加密。這是一種非常強的保護:GPG(GNU Privacy Guard, 參考如何在 Linux 中加密郵件)和 OpenSSH 就是非對稱加密的通用工具。它們依賴於公鑰-私鑰對,其中公鑰可以任意分享,但私鑰必須受到保護且不能分享。公鑰用於加密,私鑰用於解密。

但上述方法無法適用於隨機的網頁瀏覽,因為建立會話之前需要交換公鑰,你需要生成並管理金鑰對。HTTPS 會話可以自動完成公鑰分發,而且購物或銀行之類的敏感網站還會使用第三方證書頒發機構(CA)驗證證書,例如 Comodo、 Verisign 和 Thawte。

當你訪問一個 HTTPS 網站時,網站給你的網頁瀏覽器返回了一個數字證書。這個證書說明你的會話被強加密,而且提供了該網站資訊,包括組織名稱、頒發證書的組織和證書頒發機構名稱等。你可以點選網頁瀏覽器位址列的小鎖頭來檢視這些資訊(圖 1),也包括了證書本身。

圖1: 點選網頁瀏覽器位址列上的鎖頭標記檢視資訊

包括 Opera、 Chromium 和 Chrome 在內的主流瀏覽器,驗證網站數字證書的合法性都依賴於證書頒發機構。小鎖頭標記可以讓你一眼看出證書狀態;綠色意味著使用強 SSL 加密且運營實體經過驗證。網頁瀏覽器還會對惡意網站、SSL 證書配置有誤的網站和不被信任的自簽名證書網站給出警告。

那麼網頁瀏覽器如何判斷網站是否可信呢?瀏覽器自帶根證書庫,包含了一系列根證書,儲存在 /usr/share/ca-certificates/mozilla/ 之類的地方。網站證書是否可信可以透過根證書庫進行檢查。就像你 Linux 系統上其它軟體那樣,根證書庫也由包管理器維護。對於 Ubuntu,對應的包是 ca-certificates,這個 Linux 根證書庫本身是由 Mozilla 維護的。

可見,整個工作流程需要複雜的基礎設施才能完成。在你進行購物或金融等敏感線上操作時,你信任了無數陌生人對你的保護。

無處不加密

Let's Encrypt 是一家全球證書頒發機構,類似於其它商業根證書頒發機構。Let's Encrpt 由非營利性組織因特網安全研究小組Internet Security Research Group(ISRG)創立,目標是簡化網站的安全加密。在我看來,出於後面我會提到的原因,該證書不足以勝任購物及銀行網站的安全加密,但很適合加密部落格、新聞和資訊門戶這類不涉及金融操作的網站。

使用 Let's Encrypt 有三種方式。推薦使用電子前沿基金會Electronic Frontier Foundation(EFF)開發的 Cerbot 客戶端。使用該客戶端需要在網站伺服器上執行 shell 操作。

如果你使用的是共享託管主機,你很可能無法執行 shell 操作。這種情況下,最簡單的方法是使用支援 Let's Encrpt 的託管主機

如果你的託管主機不支援 Let's Encrypt,但支援自定義證書,那麼你可以使用 Certbot 手動建立並上傳你的證書。這是一個複雜的過程,你需要徹底地研究文件。

安裝證書後,使用 SSL 伺服器測試來測試你的伺服器。

Let's Encrypt 的電子證書有效期為 90 天。Certbot 安裝過程中新增了一個證書自動續期的計劃任務,也提供了測試證書自動續期是否成功的命令。允許使用已有的私鑰或證書籤名請求certificate signing request(CSR),允許建立萬用字元證書。

限制

Let's Encrypt 有如下限制:它只執行域名驗證,即只要有域名控制權就可以獲得證書。這是比較基礎的 SSL。它不支援組織驗證Organization Validation(OV)或擴充套件驗證Extended Validation(EV),因為運營實體驗證無法自動完成。我不會信任使用 Let's Encrypt 證書的購物或銀行網站,它們應該購買支援運營實體驗證的完整版本。

作為非營利性組織提供的免費服務,不提供商業支援,只提供不錯的文件和社群支援。

因特網中惡意無處不在,一切資料都應該加密。從使用 Let's Encrypt 保護你的網站使用者開始吧。

想要學習更多 Linux 知識,請參考 Linux 基金會和 edX 提供的免費課程 “Linux 入門”


via: https://www.linux.com/learn/intro-to-linux/2018/3/protect-your-websites-lets-encrypt

作者:CARLA SCHRODER 選題:lujun9972 譯者:pinewall 校對:wxy

本文由 LCTT 原創編譯,Linux中國 榮譽推出

相關文章