我试图在Windows XP POSReady上安装Microsoft发布的KB4019276 - https://support.microsoft.com/en-us/help/4019276/update-to-add-support-for-tls-1-1-and-tls-1-2-in-windows后使用TLS 1.2,并在注册表中启用它。XP POSReady和TLS 1.2
我非常简单的代码来测试它是:
Option Explicit
Const WinHttpRequestOption_SecureProtocols = 9
Const SecureProtocol_SSL2 = 8, SecureProtocol_SSL3 = 32, _
SecureProtocol_TLS1 = 128, SecureProtocol_TLS1_1 = 512, _
SecureProtocol_TLS1_2 = 2048
Dim objHTTP
Set objHTTP = CreateObject("WinHttp.WinHttprequest.5.1")
objHTTP.open "GET", "https://www.howsmyssl.com/a/check", False
objHTTP.Option(WinHttpRequestOption_SecureProtocols) = SecureProtocol_TLS1_2
objHTTP.Send
If objHTTP.WaitForResponse(30) Then 'wait up to 30 seconds
WScript.Echo "Status : " & objHTTP.Status & "<br />"
WScript.Echo "Response Length : " & LenB(objHTTP.ResponseBody)
WScript.Echo "Response Text : " & objHTTP.ResponseText
Else
WScript.Write "Request timed out"
End If
Set objHTTP = Nothing
但任何在TLS 1.0是给我的错误:
Invalid argument for Option
同时,禁用SSL 2.0,SSL 3.0和TLS 1.0我'我收到关于无法协商安全协议的错误。
有什么建议吗?
谢谢。
以前的Server 2008和旧的Windows 7存在类似的问题。看看这里:https://social.msdn.microsoft.com/Forums/windowsserver/en-US/97e37a88-f7f8-424a-b8bd-e089f1bbea84/upgrade-winhttpdll-version-to-support-tls-11-and- TLS-12-窗口-2008-R2和窗口-7?论坛= winserver2008appcompatabilityandcertification。所以这个问题似乎现在适用于Windows XP的类比(也许正如上面提到的embeddedXP 2009和POSReady已经获得了升级的winhttp.dll来支持这个功能,但普通的XP显然没有) –
但是XP没有这样的升级DLL。相反,在注册表中有一个额外的设置,以便于正确使用。请参阅KB3140245。 https://support.microsoft.com/en-in/help/3140245我还发现在XP中更新的SCHANNEL.DLL中引用了在\ Cryptography分支中创建的注册表项的新行,因为它引用了到这些(非常类似于那些在Windows 7中)。 –
我已经试过都没有成功。看来XP PosReady的支持并不完整。 – Bandimon