Debian

強制應用程序對某些域使用 TLS 1.2

  • December 24, 2020

我有一個 Debian Buster 伺服器,它無法與多個伺服器建立 HTTPS/SSL 連接,除非我使用該openssl s_client -tls1_2命令強制建立 TLS 1.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?

對於使用 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 配置文件中禁用其他版本的 TLS,可能是 /etc/gnutls/config:

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

請參閱禁用算法和協議

引用自:https://serverfault.com/questions/1047240