2017-12-27 626 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