问题描述
在Azure中,使用操作系统为Win Server 2019和Win Server 2012的虚拟机,同样代码可以链接同一个Azure Service Bus。Win2019 成功运行,但是在 Win2012上报错 :Could not create SSL/TLS secure channel.
问题解答
Win Server 2012默认不支持TLS1.2,可以通过安装 Update 3140245 以启用下面的注册表值,可以将其设置为将 TLS 1.1 和 TLS 1.2 添加到 WinHTTP 的默认安全协议列表
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Internet Settings\WinHttp\ DefaultSecureProtocols = (DWORD): 0xAA0 HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Internet Settings\WinHttp\ DefaultSecureProtocols = (DWORD): 0xAA0
PS: 修改后,需要重启VM。
如果问题依旧,可以通过抓取网络包进行分析,是否是缺少了加密套件。
比如,服务器上支持的加密套件为 TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 和TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384, 而这两个加密套件在Win2012的机器上不支持。
鉴于此情况,可以修改服务端,使得它支持Win2012上的加密套件,或者是直接升级Win2012升级到2019或重建客户端虚拟机!
参考资料
如何在客户端上启用传输层安全性 (TLS) 1.2 :https://learn.microsoft.com/zh-cn/mem/configmgr/core/plan-design/security/enable-tls-1-2-client#bkmk_winhttp
当在复杂的环境中面临问题,格物之道需:浊而静之徐清,安以动之徐生。 云中,恰是如此!