使用 Let's Encrypt 保護你的網站
曾幾何時,通過證書授權機構搭建基本的 HTTPS 網站需要每年花費數百美元,而且搭建的過程複雜且容易出錯。現在我們免費使用 Let's Encrypt,而且搭建過程也只需要幾分鐘。
為何進行加密?
為什麼要加密網站呢?這是因為未經加密的 HTTP 會話可以被多種方式濫用:
- 竊聽用戶數據包
- 捕捉用戶登錄
- 注入廣告和「重要」消息
- 注入木馬
- 注入 SEO 垃圾郵件和鏈接
- 注入挖礦腳本
網路服務提供商就是最大的代碼注入者。那麼如何挫敗它們的非法行徑呢?你最好的防禦手段就是 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 由非營利性組織 網際網路安全研究小組 (ISRG)創立,目標是簡化網站的安全加密。在我看來,出於後面我會提到的原因,該證書不足以勝任購物及銀行網站的安全加密,但很適合加密博客、新聞和信息門戶這類不涉及金融操作的網站。
使用 Let's Encrypt 有三種方式。推薦使用 電子前沿基金會 (EFF)開發的 Cerbot 客戶端。使用該客戶端需要在網站伺服器上執行 shell 操作。
如果你使用的是共享託管主機,你很可能無法執行 shell 操作。這種情況下,最簡單的方法是使用支持 Let's Encrpt 的託管主機。
如果你的託管主機不支持 Let's Encrypt,但支持自定義證書,那麼你可以使用 Certbot 手動創建並上傳你的證書。這是一個複雜的過程,你需要徹底地研究文檔。
安裝證書後,使用 SSL 伺服器測試來測試你的伺服器。
Let's Encrypt 的電子證書有效期為 90 天。Certbot 安裝過程中添加了一個證書自動續期的計劃任務,也提供了測試證書自動續期是否成功的命令。允許使用已有的私鑰或 證書籤名請求 (CSR),允許創建通配符證書。
限制
Let's Encrypt 有如下限制:它只執行域名驗證,即只要有域名控制權就可以獲得證書。這是比較基礎的 SSL。它不支持 組織驗證 (OV)或 擴展驗證 (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
本文轉載來自 Linux 中國: https://github.com/Linux-CN/archive
















