跳轉到內容

網路應用程式安全指南/SSL、TLS 和 HTTPS 基礎

來自華夏公益教科書,開放的書籍,為開放的世界

SSL、TLS 和 HTTPS 基礎

SSL/TLS 為 HTTPS 提供加密和身份驗證。 [1]

為了最大限度地提高安全性

  • 遵循 SSLLabs 最佳實踐,包括
    • 確保停用 SSLv2
    • 自己生成證書的私鑰,不要讓你的 CA 為你生成
    • 使用適當的金鑰長度(通常在 2013 年為 2048 位)
    • 如果可能,停用客戶端發起的重新協商
    • 考慮手動限制/設定密碼套件

基本原理

SSL 很容易做到,但很難做到正確。SSLLabs 提供了良好的指南,這些指南會在發現新的攻擊時更新。

CA 無需知道你的私鑰。根據所用密碼套件的不同,私鑰可以讓攻擊者解密被動竊聽的通訊。因此,即使你信任 CA,最好避免任何風險。生成一個金鑰和一個 CSR,只向 CA 提供 CSR。

增加金鑰長度會提高安全性,但也顯著增加連線建立的 CPU 負載。對於在 2013 年之後過期的證書,Mozilla Firefox 將不再接受 1024 位金鑰。2048 位金鑰應該足以滿足未來幾年所有應用程式的需求 - 使用更大的金鑰大小似乎是過猶不及。(所有資訊基於 2013 年)。注意:連線建立的巨大 CPU 開銷可被(D)DoS 攻擊者利用。當支援客戶端發起的重新協商時,此類 DDoS 攻擊更難檢測和防禦。

SSL/TLS 支援大量“密碼套件”,每個套件定義一組用於保護連線的加密機制。其中一些提供完美的前向保密,一些則沒有。(完美的前向保密意味著,如果私鑰落入攻擊者手中,他無法解密在獲得金鑰之前竊聽的資料)。通常,客戶端(瀏覽器)和伺服器透過首先交換雙方支援的套件來選擇一個密碼套件,然後選擇客戶端的首選套件。根據設定的不同,伺服器可以選擇密碼套件,忽略客戶端的偏好。大多數預設設定都比較合理,但對於高速或高安全應用程式,你可能需要考慮將支援/首選的套件限制為高速或高安全套件。如果你想排除不支援足夠安全性的客戶端(例如,古老的“出口控制”有限客戶端),確保停用這些密碼套件。在配置密碼套件時,仔細檢查設定以確保沒有允許未對伺服器進行身份驗證的“ADH”套件!如果你不確定,請保留預設設定,並始終驗證設定的效果!

  1. "關於 SSL/TLS". Instantssl.com. 檢索於 2016-04-29.
華夏公益教科書