我試圖在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