試圖在 ssllabs.com 密鑰交換中獲得 100%
我想知道需要哪些步驟才能在 ssllabs.com 的每個類別中獲得 100%。我知道這可能會導致舊系統出現問題,但我不在乎。
我的letsencrypt.org 證書使用4096 位。這是我使用以下配置可以獲得的最好成績:
SSLCipherSuite AES256+EECDH:AES256+EDH:!aNULL SSLHonorCipherOrder on SSLProtocol all -TLSv1.1 -TLSv1 -SSLv3 -SSLv2
我在某處讀到可以使用預生成的 dhparam 文件改進密鑰交換。
所以我使用
openssl dhparam -out dhparam.pem 4096
(這大約花了一個小時)生成了這個文件,並將它添加到我的 apache 配置中SSLOpenSSLConfCmd DHParameters "/etc/ssl/certs/dhparam.pem"
但這導致與以前相同的分數。那麼我在這裡錯過了什麼?
截至 2017 年 10 月,如果您使用的是 Diffie-Hellman,您應該同時擁有DH 參數和具有等效 4096 位 RSA 的密鑰。
您為 2048 位密鑰提供至少一個證書。您在該證書中也有不尋常的元數據,請檢查(用於說“我不為非 sni 客戶端提供服務”的預設蛇油證書通常只有主機名
Common Name
)**編輯:**您不會因為您專門提供不提供非 SNI 客戶端的證書而在 SSL 實驗室評級中受到處罰。您也不會因為作為證書鏈的一部分提供給已知根的弱密鑰證書而受到懲罰。
您將在ssllabs github 帳戶上找到有關評級的完整文件。
對於依賴 DHE 或 ECDHE 密鑰交換的套件,在確定整體握手強度時會考慮 DH 參數的強度。許多支持 DHE 的伺服器使用提供 1024 位安全性的 DH 參數。在這樣的伺服器上,密鑰交換的強度永遠不會超過 1024 位,即使私鑰更強(通常是 2048 位)。
secp256v1
評級指南沒有說,但我能夠確認,如果您的伺服器喜歡(相當於 3k 位 RSA),同時提供可以使用的 ECDHE 密碼secp384v1
(相當於 7k 位 RSA),您無法獲得 100 分。Chrome 57 / Win 7 R RSA 4096 (SHA256) TLS 1.2 > http/1.1 TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 ECDH secp256r1 FS
Apache手冊確實列出了一個強制執行此操作的選項(僅
Curves
按強度排序參數似乎是不夠的)兼容性:在 httpd 2.4.8 及更高版本中可用,如果使用 OpenSSL 1.0.2 或更高版本 SSLOpenSSLConfCmd ECDHParameters brainpoolP256r1
https://httpd.apache.org/docs/2.4/mod/mod_ssl.html#sslopensslconfcmd
如果您在此處命名一條曲線,該曲線可被視為等效於 RSA >=4096 位,則 ssl 實驗室將使用該曲線作為您的 ECDHE 密碼 - 列出由於不支持該曲線而無法再成功與您的伺服器握手的客戶端.
仔細調查您希望支持的瀏覽器列表,選擇非標準的 EC 曲線將使您的網站無法被許多舊瀏覽器訪問!