刪除舊的密碼套件

刪除舊的密碼套件

我管理一些網站,其中一個網站的安全評級很差(來自安全記分卡)。我有一個託管伺服器,所以我請IT人員幫忙,但也想更多地了解這個問題。

問題是,有舊的 TLS1.0 和 TLS1.1 密碼套件,例如:

TLS_RSA_WITH_IDEA_CBC_SHA (0x0007)
TLS_DHE_RSA_WITH_3DES_EDE_CBC_SHA
TLS_RSA_WITH_RC4_128_MD5
TLS_RSA_WITH_3DES_EDE_CBC_SHA

我的第一個想法是,這些必須位於 OpenSSL 設定檔中。但經過一些教學後,我猜它指的是 Apache 設定。 (和虛擬主機httpd.conf)沒有明確設定的密碼套件。但其中httpd-ssl.conf包含一些東西。

SSLProtocol all -SSLv2 -SSLv3 -TLSv1 -TLSv1.1
SSLHonorCipherOrder on
 SSLCipherSuite  ECDH+AESGCM:ECDH+CHACHA20:ECDH+AES256:!LOW:!MEDIUM:!3DES:!aNULL:!eNULL:!ADH:!DSS!EXP:!MD5:!PSK:!RC4:!SRP

我目前不明白的是:這是正確的地方嗎?也許不是,或者為什麼讀起來不同。

我在 ciphersuite.info 上讀到,上面的第一個是 IANA 名稱(?),還有 OpenSSL 名稱。但ECDH+AESGCM舉例來說是什麼?

可能需要一些關於下一步該去哪裡的指導。不想複製和貼上訊息,但想更多地了解這個主題。然而,我不是安全或主要 IT 人員,所以我不想讀 300 頁的書:-/

答案1

SSLCipherSuite是設定應使用的加密演算法的正確指令。在 TLS 1.2 中,您需要設定四種演算法的組合(稱為密碼套件):

  • 一種密鑰交換演算法,用於在客戶端和伺服器之間建立共享秘密。然後,雙方都可以根據該秘密導出對稱加密的金鑰。
  • 用於金鑰交換的簽章演算法。
  • 一種對稱密鑰演算法,用於實際加密和解密應傳輸的資料。
  • 一種雜湊演算法,用於確保訊息的完整性(透過訊息驗證碼)或建構加密安全的偽隨機數產生器。

每個密碼套件都有一個唯一的識別符透過 IANA 註冊並從 開始TLS_。例如,它TLS_DHE_RSA_WITH_AES_128_GCM_SHA256代表:

  • 密鑰交換演算法是DHE,即與臨時密鑰的Diffie-Hellman 密鑰交換。
  • 簽章演算法為RSA。
  • 對稱加密演算法是 GCM 模式下具有 128 位元金鑰的 AES。
  • 哈希演算法是 SHA-256。

OpenSSL 作為具體 TLS 實作的提供者,讓您可以透過以下方式選擇 IANA 密碼套件:稱為「密碼清單」的自訂格式。此格式支援複雜的選擇規則,例如ECDH+AESGCM代表包含演算法ECDH(用於金鑰交換)和AESGCM(用於對稱加密)的所有密碼套件。您可以使用命令檢查獲得的確切密碼套件openssl ciphers "ECDH+AESGCM"。就我而言,該清單包括密碼套件TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384(或 OpenSSL 稱之為ECDHE-ECDSA-AES128-GCM-SHA256)。

字串ECDH+AESGCM本身是不是密碼套件。這是 OpenSSL 特定的密碼套件選擇規則。

在實踐中,我會使用安全密碼套件的具體列表,例如來自 Mozilla 的建議。使用 OpenSSL 選擇規則,存在包含您實際上並不打算使用的密碼套件的風險(即使您始終可以使用openssl ciphers上述命令檢查結果)。

相關內容