簡體   English   中英

VB.NET Web服務無法連接:“無法創建SSL / TLS安全通道”

[英]VB.NET Web Service connection impossible : “Could not create SSL/TLS secure channel”

我正在嘗試連接到在服務器端用Java語言編寫的Web服務。 我的程序是在客戶端的VB.NET 4.0中編寫的。

當我嘗試從Web服務調用任何方法時,會收到以下錯誤消息:

WS-Metadata Exchange錯誤URI:[ http:// ...]元數據包含無法解析的引用。 該請求已中止:無法創建SSL / TLS安全通道

我正在使用證書連接到Web服務,但是問題似乎出在主機(客戶端)和服務器之間的通信級別上。 我正在使用的證書從未被檢查過,因為客戶端和服務器甚至無法通信。

我試圖將安全協議設置為“ SSLv3”或“ TLS12”,但沒有幫助。 預先感謝您的任何建議。

我還應該提到我設法使用Java類連接到此Web服務。 看來,當客戶端使用Java編寫時,它可以工作,但是當它在VB.NET中時,則不能工作。

哈伯

編輯:

我使用“ Wireshark”發現了我的程序發送和接收的HTTPS數據包,這里是我在傳輸的數據包中找到的內容:

客戶要求:

Secure Sockets Layer
TLSv1 Record Layer: Handshake Protocol: Client Hello
    Content Type: Handshake (22)
    Version: TLS 1.0 (0x0301)
    Length: 140
    Handshake Protocol: Client Hello
        Handshake Type: Client Hello (1)
        Length: 136
      Version: TLS 1.0 (0x0301)
        Random
        Session ID Length: 0
        Cipher Suites Length: 24
        Cipher Suites (12 suites)
        Compression Methods Length: 1
        Compression Methods (1 method)
        Extensions Length: 71
        Extension: server_name
        Extension: elliptic_curves
        Extension: ec_point_formats
        Extension: Extended Master Secret
        Extension: renegotiation_info

來自服務器的響應:

Secure Sockets Layer
TLSv1 Record Layer: Alert (Level: Fatal, Description: Handshake Failure)
    Content Type: Alert (21)
    Version: TLS 1.0 (0x0301)
    Length: 2
    Alert Message
        Level: Fatal (2)
        Description: Handshake Failure (40)

我試圖將安全協議更改為不同版本的SSL / TLS,但沒有任何改變。 我的客戶端嘗試發送帶有標准值(未指定用戶自定義參數)的“客戶端問候”,但是服務器不接受它。 有什么建議么 ?

找到解決方案:

該問題實際上與密碼套件,尤其是RC4算法有關。 實際上,我的客戶端是用VB.NET 4.0編寫的,並且在此版本的.NET中,.NET框架仍支持並建議在“ Hello Client”(握手)過程中將RC4算法推薦給任何Web服務器。

客戶端支持的密碼套件列表中唯一存在RC4密碼套件的原因是服務器使服務器中止連接並顯示以下錯誤消息: “請求已中止:無法創建SSL / TLS安全通道”

因此,我必須通過使用regedit.exe進入系統注冊表並在以下兩個指定路徑中添加以下密鑰來停用客戶端計算機上的RC4密碼套件:

HKEY_LOCAL_MACHINE \\ SOFTWARE \\ Microsoft.NETFramework \\ v4.0.30319“ SchUseStrongCrypto” = dword:00000001

HKEY_LOCAL_MACHINE \\ SOFTWARE \\ Wow6432Node \\ Microsoft.NETFramework \\ v4.0.30319“ SchUseStrongCrypto” = dword:00000001

重新啟動客戶端計算機后,我能夠成功連接到Web服務。

有關不推薦使用的RC4算法的更多信息:

https://technet.microsoft.com/en-us/library/security/2960358.aspx

=>另外您還應該注意,此問題僅在.NET 4.0-4.5中存在。 從4.6版及更高版本開始可以正常工作。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM