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

car*_*ott 2 debian openssl

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

来自不同客户端的错误是:

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

openssl.cnfMinProtocol = TLSv1.2默认已经有。

受影响的服务器是:

  • api.nuget.org
  • 微软软件包
  • Production.cloudflare.docker.com

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

car*_*ott 5

对于使用 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
Run Code Online (Sandbox Code Playgroud)

请参阅禁用算法和协议