web-dev-qa-db-ja.com

ssllabs.comの鍵交換で100%を取得しようとしています

Ssllabs.comのすべてのカテゴリで100%を取得するために必要な手順を知りたいと思いました。これが古いシステムで問題を引き起こす可能性があることは承知していますが、気にしません。

私のletsencrypt.org証明書は4096ビットを使用しています。これは、次の構成を使用して取得できる最高のスコアです。

SSLCipherSuite AES256+EECDH:AES256+EDH:!aNULL
SSLHonorCipherOrder on
SSLProtocol all -TLSv1.1 -TLSv1 -SSLv3 -SSLv2

score before adding DHParameters

事前に生成されたdhparamファイルを使用してキー交換を改善できることを どこか と読みました。

そのため、openssl dhparam -out dhparam.pem 4096を使用してこのファイルを生成し(これには約1時間かかりました)、次のコマンドを使用してApache構成に追加しました

SSLOpenSSLConfCmd DHParameters "/etc/ssl/certs/dhparam.pem"

しかし、これは以前と同じスコアになります。だから私はここで何が欠けていますか?

完全なssllabs.comの結果

7
feedc0de

2017-10以降、Diffie-Hellmanを使用している場合は、DHパラメーターの両方に4096ビットのRSA

2048ビットのキーに対して少なくとも1つの証明書を提供しています。また、その証明書に異常なメタデータが含まれていることを確認してください(「i以外のクライアントにサービスを提供しない」というデフォルトのスネークオイル証明書は、通常、ホスト名がCommon Nameにのみある)

編集:非SNIクライアントを独占的に提供しない証明書については、SSL Labsの評価にペナルティは課されません。また、既知のルートへの証明書チェーンの一部として提供する弱いキーの証明書に対してペナルティが課されることはありません。

ssllabsgithubアカウントの評価に関する完全なドキュメントがあります。

DHEまたはECDHE鍵交換に依存するスイートの場合、ハンドシェイク全体の強度を決定するときに、DHパラメータの強度が考慮されます。 DHEをサポートする多くのサーバーは、1024ビットのセキュリティを提供するDHパラメーターを使用します。このようなサーバーでは、秘密鍵のほうが強力(通常は2048ビット)であっても、鍵交換の強度が1024ビットを超えることはありません。

評価ガイドには明記されていませんが、secp256v1を使用している可能性のあるECDHE暗号を提供しているときに、サーバーがsecp384v1(3kビットRSAと同等)を優先する場合、評価100を取得できないことを確認できました7kビットRSA)。

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マニュアルには、これを強制する1つのオプションがリストされています(Curvesパラメータを強さ順に並べるだけでは不十分のようです)

互換性:OpenSSL 1.0.2以降を使用している場合、httpd 2.4.8以降で使用可能SSLOpenSSLConfCmd ECDHParameters brainpoolP256r1

https://httpd.Apache.org/docs/2.4/mod/mod_ssl.html#sslopensslconfcmd

ここで、RSA> = 4096ビットと同等と見なすことができる曲線に名前を付けると、sslラボはECDHE暗号にそれを使用します-その曲線をサポートしていないため、サーバーとのハンドシェイクに成功できなくなったクライアントをリストします。

secp384r1 will grant 100%

サポートするブラウザのリストを慎重に調査し、非標準のEC曲線を選択すると多くの古いブラウザからサイトにアクセスできなくなります!

8
anx