Apache SSL 配置 - SSLLabs 如何获得 A+

Apache SSL 配置 - SSLLabs 如何获得 A+

我有这个配置

SSLCipherSuite AES128+EECDH:AES128+EDH
SSLProtocol All -SSLv2 -SSLv3

适用于 Apache 2.4.6、OpenSLL 1.0.2a

在 SSLLab 的 SSLtest 上我得到了 A,

它建议(警告)我启用了以下密码:

TLS_DHE_RSA_WITH_AES_128_GCM_SHA256 (0x9e)   DH 1024 bits (p: 128, g: 1, Ys: 128)   FS   WEAK       128
TLS_DHE_RSA_WITH_AES_128_CBC_SHA256 (0x67)   DH 1024 bits (p: 128, g: 1, Ys: 128)   FS   WEAK       128
TLS_DHE_RSA_WITH_AES_128_CBC_SHA (0x33)   DH 1024 bits (p: 128, g: 1, Ys: 128)   FS   WEAK      128

我怎样才能禁用它们?

我试过

SSLCipherSuite AES128+EECDH:AES128+EDH:!TLS_DHE_RSA_WITH_AES_128_CBC_SHA:!TLS_DHE_RSA_WITH_AES_128_CBC_SHA256:!TLS_DHE_RSA_WITH_AES_128_GCM_SHA256

但这似乎并没有停止支持这些密码,我确信它配置错误,有人可以建议如何禁用它们吗?

答案1

OpenSSL 使用自己的密码名称,而不是标准定义的 TLS_this_with_that 名称,尽管它们包含等效信息。这三个 TLS_DHE_RSA 密码由 SSLCipherSuite 中的 AES128+EDH 术语启用,它还启用了三个相应的 TLS_DHE_DSS 密码,但 ssllabs 看不到这些密码,因为您的服务器没有 DSS(又名 DSA)密钥和证书,大概是因为您的证书来自公共 CA,而据我所知,没有公共 CA 颁发 DSS 证书。

因此您只需删除 AES128+EDH 术语即可。

或者,您可以使用更大的(2048 位)DH 组使 DHE_RSA 密码足够强大,以满足 ssllabs 的要求。Apache 的新版本使这变得更容易,并且可能总体上更好,但如果您必须继续使用 2.4.6,那么进行 ssllabs/Qualys 测试的同一位朋友在以下网址提供了一些建议: http://blog.ivanristic.com/2013/08/increasing-dhe-strength-on-apache.html

编辑有关 EECDH+AES128(即 ECDHE)根本不允许连接的评论信息:

看来您的 httpd 不支持 ECDHE,而 2.4 应该支持。Ristic 表示,2013 年 8 月它被添加到 2.3.3 中https://community.qualys.com/thread/11796https://serverfault.com/a/569677/216633表示它在 2.4 中受支持但 2.2 中不受支持(显然它后来被移植到 2.2.26)。 http://httpd.apache.org/docs/current/mod/mod_ssl.html描述改进2.4.7 中的 DH(E) 和 ECDH(E) 参数,这强烈表明至少基本参数之前就存在了。

您可能使用的是 RedHat 版本?我知道 RedHat 直到 2013 年底(即 OpenSSL 1.0.2a 之前)才从 OpenSSL 和 GnuPG 中删除了(所有)椭圆曲线加密,我可以想象(但不知道)他们可能还更改了 mod_ssl 以省略 ECDH(E) 参数,即曲线。

答案2

我确信这不会让您一路跨过终点线,但如果没有这个,我认为您不会获得 A+:

SSLHonorCipherOrder on

这可以防止浏览器的密码顺序偏好设置覆盖您已配置的设置。

答案3

它不起作用,因为您输入了无效的密码。例如,这是不正确的,下面一行是正确的:

TLS_DHE_RSA_WITH_AES_128_CBC_SHA

DHE-RSA-AES128-SHA

如果你只是想完成这项工作,你可以复制这个:

SSLCipherSuite "ECDHE-ECDSA-CHACHA20-POLY1305-SHA256:ECDHE-RSA-CHACHA20-POLY1305-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA256:ECDHE-RSA-AES256-SHA:ECDHE-RSA-AES128-SHA:ECDHE-RSA-DES-CBC3-SHA:DHE-RSA-AES128-CBC-SHA:AES256-GCM-SHA384:AES128-GCM-SHA256:AES256-SHA256:AES128-SHA256:AES256-SHA:DHE-DSS-3DES-EDE-CBC-SHA:AES128-SHA:DES-CBC3-SHA:!CAMELLIA:!aNULL:!eNULL:!EXPORT:!DES:!MD5:!PSK:!RC4"
SSLHonorCipherOrder on

还有一件事:如果你禁用此密码,你将无法在所有浏览器中实现前向保密。如果你想要完全前向保密,我建议将 Apache 更新到 2.4.8 并使用以下命令:

openssl dhparam -out dhparams.pem 2048

然后将其添加到 Apache:

SSLOpenSSLConfCmd DHParameters“{dhparams.pem 的路径}”

您可以在此网站上找到更多信息:https://weakdh.org/sysadmin.html

顺便说一句,具有 HSTS 和 tls_fallback_scsv 的网站将获得 A+ 评级。

相关内容