试图获得ssllabs.com密钥交换100%

我想知道什么步骤需要在ssllabs.com的每个类别100%。 我知道这可能会导致旧系统的问题,但我不在乎。

我的letsencrypt.org证书使用4096位。 这是我可以得到使用以下configuration的最好成绩:

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

在添加DHParameters之前得分

我读了一个地方 ,可以使用预生成的dhparam文件改进密钥交换。

所以我使用openssl dhparam -out dhparam.pem 4096 (这需要大约一个小时)生成这个文件,并将其添加到我的apacheconfiguration使用

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

但是结果与之前相同。 那么我在这里错过了什么?

完整ssllabs.com结果

截至2017年10月,如果您使用的是Diffie-Hellman,您应该同时拥有DH参数具有相同4096位RSA的密钥

您提供至less一个2048位密钥的证书。 你也在这个证书中有不寻常的元数据,检查(默认的蛇油证书说“我不服务非sni客户端”通常只有Common Name的主机名)

编辑:你不会被罚款在SSL实验室评级证书,你独家提供没有非SNI客户。 您也不会因为您提供给已知根证书链的一部分而提供的弱密钥证书而受到惩罚。

您将在ssllabs github账户上find关于评级的完整文档。

对于依赖于DHE或ECDHE密钥交换的套件,在确定握手的整体强度时要考虑DH参数的强度。 许多支持DHE的服务器都使用提供1024位安全性的DH参数。 在这样的服务器上,即使私钥更强(通常2048位),密钥交换的强度也不会超过1024位。

评级指南并没有说,但我能够确认,如果您的服务器偏好secp256v1 (相当于3k位RSA),同时提供可能使用secp384v1 ECDHE密码(相当于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手册没有列出一个选项来强制这个(只是按强度sortingCurves参数似乎是不够的)

兼容性:如果使用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将授予100%

仔细调查你希望支持的浏览器列表,select一个非标准的EC曲线会让你的网站无法访问许多旧的浏览器!