强制应用程序对某些域使用 TLS 1.2

强制应用程序对某些域使用 TLS 1.2

我有一台 Debian Buster 服务器,除非我使用命令强制建立 TLS 1.2 连接,否则无法与多台服务器建立 HTTPS/SSL 连接openssl s_client -tls1_2

来自各个客户端的错误如下:

  • openssl s_client-“SSL 握手已读取 0 个字节”
  • wget — “GnuTLS:TLS 连接未正确终止。”
  • curl-“OpenSSL SSL_connect:SSL_ERROR_SYSCALL”
  • dotnet nuget restore - “从传输流中收到意外的 EOF 或 0 字节。”

openssl.cnf 已经MinProtocol = TLSv1.2默认了。

受影响的服务器包括:

  • api.nuget.org
  • packages.microsoft.com
  • production.cloudflare.docker.com

连接到这些域时,如何强制我的服务器使用 TLS 1.2?

答案1

对于使用 OpenSSL 的应用程序,您可以将 MinProtocol 和 MaxProtocol 版本设置为 TLSv1.2,以强制所有连接使用 TLSv1.2。我不知道如何针对每个域进行设置。这是不可取的,因为某些服务器仅支持 TLSv1.3,因此与它们的连接将失败。

  1. 打开 openssl.cnf:vi /etc/ssl/openssl.cnf
  2. 滚动到底部:Shift-G
  3. 插入新行:Shift-O
  4. 添加MaxProtocol = TLSv1.2

对于使用 GnuTLS 的应用程序(例如 apt),您可以在系统范围的 GnuTLS 配置文件(可能是 /etc/gnutls/config)中禁用其他版本的 TLS:

[overrides]
disabled-version = tls1.0
disabled-version = tls1.1
disabled-version = tls1.3

禁用算法和协议

相关内容