如何将 TLSv1.2 和 TLSv1.1 添加到 ssl 协议?

如何将 TLSv1.2 和 TLSv1.1 添加到 ssl 协议?

我的项目使用的是 DigitalOcean 服务器。该服务器的默认 TLS 是 TLSv1.3

但在我的 Nginx 配置上,即使我不添加TLSv1.3,仍然只TLSv1.3出现。

如何添加TLSv1.2SSL 协议?

问题是,如果我使用TLSv1.3,则会出现handshake tls version错误Flutter,所以我需要添加旧版本。

nginxopenssl版本:

nginx version: nginx/1.18.0
built with OpenSSL 1.1.1g  21 Apr 2020
TLS SNI support enabled

nginx配置:

ssl_session_cache shared:le_nginx_SSL:1m;
ssl_session_timeout 1440m;

ssl_protocols TLSv1.1 TLSv1.2;
ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384;
ssl_prefer_server_ciphers off;

您可以通过此链接检查 tls 版本: tls 版本

输出nginx -t

nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

答案1

nginx 似乎首先选择 TLS 版本,然后才检查 SNI。

因此,它ssl_protocols使用与选择默认虚拟主机相同的算法进行选择。也就是说,如果有一个server带有 的块listen ... default_serverssl_protocols则从该块开始使用。否则,将使用第一个server块。ssl_protocols

这意味着您需要ssl_protocolshttp级别上指定所有虚拟主机并包含任何虚拟主机所需的所有协议。

您可以在nginx 邮件列表消息

相关内容