指定用于WSHttpBinding客户端连接的SSL协议版本

本文关键字:SSL 协议 版本 连接 客户端 用于 WSHttpBinding | 更新日期: 2023-09-27 18:26:54

在通过WSHttpBinding使用web服务时,是否可以指定要使用的SSL协议版本?

我一直在使用跟踪日志来尝试确定为什么我使用客户端证书通过SSL对web服务的调用失败。

最后的日志记录显示一个警报15 03 01 00 02和一个意外错误的警报代码02 0A。我怀疑这个错误是因为服务器无法处理我向它抛出的SSL版本

System.Net.Sockets Verbose: 0 : [13908] Exiting Socket#15927457::Send()     -> Int32#138
System.Net.Sockets Verbose: 0 : [13908] Socket#15927457::Receive()
System.Net.Sockets Verbose: 0 : [13908] Data from Socket#15927457::Receive
System.Net.Sockets Verbose: 0 : [13908] 00000000 : 15 03 01 00 02                                  : .....
System.Net.Sockets Verbose: 0 : [13908] Exiting Socket#15927457::Receive()  -> Int32#5
System.Net.Sockets Verbose: 0 : [13908] Socket#15927457::Receive()
System.Net.Sockets Verbose: 0 : [13908] Data from Socket#15927457::Receive
System.Net.Sockets Verbose: 0 : [13908] 00000005 : 02 0A                                           : ..
System.Net.Sockets Verbose: 0 : [13908] Exiting Socket#15927457::Receive()  -> Int32#2
System.Net Information: 0 : [13908] InitializeSecurityContext(credential = System.Net.SafeFreeCredential_SECURITY, context = 79d80e8:7a0e230, targetName = dsl-wholesale-testing.iinet.net.au, inFlags = ReplayDetect, SequenceDetect, Confidentiality, AllocateMemory, InitManualCredValidation)
System.Net Information: 0 : [13908] InitializeSecurityContext(In-Buffers count=2, Out-Buffer length=0, returned code=IllegalMessage).
System.Net.Sockets Verbose: 0 : [13908] Socket#15927457::Dispose()
System.Net Error: 0 : [13908] Exception in HttpWebRequest#41613110:: - The request was aborted: Could not create SSL/TLS secure channel..
System.Net Error: 0 : [13908] Exception in HttpWebRequest#41613110::GetResponse - The request was aborted: Could not create SSL/TLS secure channel..

我有一个基于PHP的客户端,它可以使用相同的web服务,并且我通过cURL(curl_setopt($ch, CURLOPT_SSLVERSION, 3);)指定SSL版本3。

指定用于WSHttpBinding客户端连接的SSL协议版本

版本可以设置如下:

System.Net.ServicePointManager.SecurityProtocol=System.Net.SecurityPProtocolType.Ssl3;