测试 HTTPS 忽略 DHE 加密

测试 HTTPS 忽略 DHE 加密

我正在设置 nginx (v1.16.1,OpenSSL 1.1.1) 以使用 https。我使用 letsencrypt 证书 - SHA-256 和 RSA 加密。我使用 TLSv1.2 我测试了 ssllabs 和 observatory。规定的加密下一行

ssl_ciphers DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256;

经过测试,发现只检测到了 ECDHE。我尝试了各种组合。

埃奇

问题是我需要加密才能在 Win 7 和 Win 8.1 版本中正确使用 IE11,但在测试时我收到错误

“服务器发送致命警报:handshake_failure”

如果我在同一个 ssllabs 上看到 IE11 Win7 支持的证书,那么就会显示我尝试使用的支持。

LS_DHE_RSA_WITH_AES_256_GCM_SHA384

TLS_DHE_RSA_WITH_AES_128_GCM_SHA256

win7ie11

如果我指定一堆额外支持的加密,那么一切都会好起来,但所有其他加密方法都很弱。

OpenSSL 支持这种类型的密码

$ openssl ciphers -v | grep DHE-RSA-AES128-GCM-SHA256
ECDHE-RSA-AES128-GCM-SHA256 TLSv1.2 Kx=ECDH     Au=RSA  Enc=AESGCM(128)    Mac=AEAD
DHE-RSA-AES128-GCM-SHA256 TLSv1.2 Kx=DH       Au=RSA  Enc=AESGCM(128) Mac=AEAD

配置:

server {
listen            443 ssl http2;
server_name       test.ru;

ssl_protocols           TLSv1.2;
ssl_certificate         /etc/nginx/conf.d/ssl/fullchain.pem;
ssl_certificate_key     /etc/nginx/conf.d/ssl/privkey.pem;
ssl_ciphers DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256;
ssl_ecdh_curve secp384r1;
ssl_prefer_server_ciphers on;
ssl_session_cache shared:SSL:10m;
add_header Strict-Transport-Security "max-age=63072000" always;

location / {
        proxy_pass            http://192.168.1.2;
        proxy_redirect        off;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_ssl_server_name on;
        proxy_ssl_name test.ru;
        proxy_set_header Host $http_host;
        proxy_pass_header Set-Cookie;
}

可能是什么原因?

答案1

您需要设置ssl_dhparam(见https://nginx.org/en/docs/http/ngx_http_ssl_module.html#ssl_dhparam) 以使 DHE 密码能够在 nginx 上运行。

引用自文档:

默认情况下没有设置参数,因此不会使用 DHE 密码。

相关内容