2017-12-27 623 views
2

我试图在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我'我收到关于无法协商安全协议的错误。

有什么建议吗?

谢谢。

回答

-1

如果我的expermiental Winxp sp3(包括所有进一步的更新)实际上有相同的问题。 我发现WINHTTP.DLL仍然不包含API调用函数 SECUREPROTOCOL_TLS1_1以及SECUREPROTOCOL_TLS1_2。 引起“无效选项”错误。

因此,标准XP系统不支持此语法!
(winhttp.dll没有得到更新)。 ONly嵌入式XP可能会收到一个更新的winhttp.dll文件接受此选项。

我现在努力以某种方式获得更新的不祥winhttp.dll。

结果将在此处报告。

+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显然没有) –

+0

但是XP没有这样的升级DLL。相反,在注册表中有一个额外的设置,以便于正确使用。请参阅KB3140245。 https://support.microsoft.com/en-in/help/3140245我还发现在XP中更新的SCHANNEL.DLL中引用了在\ Cryptography分支中创建的注册表项的新行,因为它引用了到这些(非常类似于那些在Windows 7中)。 –

+0

我已经试过都没有成功。看来XP PosReady的支持并不完整。 – Bandimon