配置 Nginx 以支持需要 DH 参数为 1024 或更小的客户端,而不会削弱其他所有人的安全性?

配置 Nginx 以支持需要 DH 参数为 1024 或更小的客户端,而不会削弱其他所有人的安全性?

访问我们 Web 服务器的第三方 Web 工具似乎使用的是 Java 6,不支持大于 1024 位的 DH 参数。它无法连接到我们的服务器,因为我们的 dhparams 文件设置为 4096 位。

在Nginx中,在 dhparams 文件中设置nginx.conf,使用ssl_dhparam参数。

据推测,如果我们用 1024 位重新生成 dhparams.pem 文件,这会削弱每个人的安全性。

有没有办法让这个旧客户端使用 1024 位 dhparams 进行连接,而其他客户端使用 4096 位 dhparams?更复杂的是,Java 6 似乎不支持 SNI。

有什么好办法可以处理这种情况吗?

答案1

客户端不会在握手中宣布它支持哪种 DH 密钥强度,因此服务器不能对不同的客户端使用不同的 DH 密钥。但是,只有在使用 DH 密码时才会使用 DH 密钥。现代客户端更喜欢 ECDHE,如果您的 nginx 接受此偏好,则握手将根本不使用 DH 参数,因为它不会进行 DHE 密钥交换,而是进行 ECDHE 密钥交换。有关更喜欢 ECDHE 的配置示例,请参阅https://mozilla.github.io/server-side-tls/ssl-config-generator/

对于没有 SNI 的客户端:它们将仅使用 nginx 中配置的默认主机。因此,如果您有一个适当的证书,该证书与不支持 SNI 的客户端可能用于连接到您的服务器的所有名称相匹配,那么它应该可以正常工作。

相关内容