繁体   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