Debian
強制應用程序對某些域使用 TLS 1.2
我有一個 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,因此與它們的連接將失敗。
- 打開openssl.cnf:
vi /etc/ssl/openssl.cnf
- 滾動到底部:Shift-G
- 插入新行:Shift-O
- 添加
MaxProtocol = TLSv1.2
對於使用 GnuTLS 的應用程序,例如 apt,您可以在系統範圍的 GnuTLS 配置文件中禁用其他版本的 TLS,可能是 /etc/gnutls/config:
[overrides] disabled-version = tls1.0 disabled-version = tls1.1 disabled-version = tls1.3
請參閱禁用算法和協議。