如何在 Nginx 中禁用 TLS v1.1

如何在 Nginx 中禁用 TLS v1.1

这似乎是一个简单的配置设置,但我无法禁用 TLSv1.1。

nginx.conf在/etc/nginx中:

SSL协议TLSv1.2;

域配置last_nginx.conf(通过 nginxDomainVirtualHost.php 中的 Plesk 模板更改):

ssl_protocols                TLSv1.2;    
ssl_ciphers                 ECDHE-RSA-AES256-SHA384:DHE-RSA-AES256-SHA384:ECDHE-RSA-AES256-SHA256:DHE-RSA-AES256-SHA256:ECDHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA256:HIGH:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!SRP:!CAMELLIA;

ssl_prefer_server_ciphers   on;
ssl_dhparam /etc/nginx/ssl/server.dh_pem;

TLSv1.1 仍然处于启用状态,并且使用 openssl 测试时返回以下内容:

openssl s_client -tls1_1 -connect mydomain.com:443 < /dev/null

    New, TLSv1/SSLv3, Cipher is DHE-RSA-AES256-SHA
Server public key is 2048 bit
Secure Renegotiation IS supported
Compression: NONE
Expansion: NONE
SSL-Session:
    Protocol  : TLSv1.1
    Cipher    : DHE-RSA-AES256-SHA
    Session-ID: E298E87276A0776AF736439AF260FE0F92B17330ED97D5F3C2F87CF02C3F75A8

我在这里遗漏了什么?为什么虽然只指定了 TLSv1.2,但 TLSv1.1 仍然启用?

关于如何禁用 TLSv1.1 有什么建议吗?

谢谢!

答案1

这是猜测,因为您没有发布完整(经过净化)的配置,但很可能在多个服务器上使用了共享块。虽然配置语法看起来是可能的,但实际上您无法在共享相同 的块listen之间使用不同的密码规范。serverlisten

进一步来说:

server {
   listen 443 ssl;
   server_name tls.example.com;
}

server {
   listen 443 ssl;
   server_name tls12.example.com;
   ssl_protocols TLSv1.2;
}

如果您在此处 curl tls12.example.com ,您会发现它支持 1.1。但是,如果您将相同的限制添加到 tls.example.com server,则仅支持 1.2。

唯一真正的解决办法是使用专用 IP 进行限制,或者确保server该(ip,端口)组合的所有块具有相同的 SSL 密码设置。

旁注:上述讨论也适用于启用/禁用 HTTP/2。

相关内容