请求被中止:无法创建SSL/TLS安全通道
我们有一个.Net 2.0网络应用程序,它使用第三方程序集从我们运行在服务器上的网页向第三方站点发出web服务调用。该通话是通过https进行的。直到大约2周前,这个代码已经运行了好几年了。供应商在上个月内更新了他们的证书。然而,没有其他客户报告过问题,我们的一些机器没有问题。在我们的服务器的一些当我们得到的电话时,我们得到了请求被中止:无法创建SSL/TLS安全通道。在其他服务器上没有问题。这些服务器都是运行相同代码库的Windows 2003。我们打开.Net跟踪,并在一台好的服务器和两个不好的服务器上捕获跟踪。我们已经验证了返回到所有服务器的证书是一样的。 .Net跟踪显示返回的一个InitializeSecurityContext调用返回的代码= Illegal Message。我已经验证过schannel.dll,secur32.dll和system.net.dll是所有服务器上的相同版本。我还证实了CA是Trusted(Verisign)。请求被中止:无法创建SSL/TLS安全通道
在这一点上,我正在寻找任何疑难解答的想法。
下面的日志摘录。第一个来自发生错误的服务器。请注意,在坏服务器的日志中,字节接收序列始终为204,5,2,错误。在良好的服务器上,字节序列总是204,5,1,继续。
为服务器
的System.Net.Sockets详细:0:[15784]退出插座#50912888 ::发送() - > 204#204
的System.Net.Sockets详细:0 :[15784]插孔#50912888 ::接收()
的System.Net.Sockets详细:0:[15784]数据从插槽#50912888 ::接收
的System.Net.Sockets详细:0:[ 15784] 00000000:15 03 00 00 02:.....
级的System.Net.Sockets详细:0:[15784]退出插座#50912888 ::接收() - > 5#5
的System.Net.Sockets详细:0:[15784]插孔#50912888: :接收()
的System.Net.Sockets详细:0:[15784]数据从插槽#50912888 ::接收
的System.Net.Sockets详细:0:[15784] 00000005:02 28: (
System.Net.Sockets详细:0:[15784]退出套接字#50912888 :: Receive() - > 2#2
System.Net信息0:[15784]的InitializeSecurityContext(凭证= System.Net.SafeFreeCredential_SECURITY,上下文= 10709bc8:189fc88,目标名称= transform.documentmailbox.net,inFlags = ReplayDetect,SequenceDetect,保密性,AllocateMemory,InitManualCredValidation) System.Net信息:0:InitializeSecurityContext(In-Buffers count = 2,Out-Buffer length = 0,返回的代码= IllegalMessage)。
的System.Net.Sockets详细:0:[15784]插孔#50912888 ::的Dispose()
System.Net错误:0:[15784]在HttpWebRequest的#44205226 ::异常 - 请求是中止:无法创建SSL/TLS安全通道。
System.Net错误:0:[15784] HttpWebRequest中的异常#44205226 :: EndGetRequestStream - 请求被中止:无法创建SSL/TLS安全通道。
良好服务器:
的System.Net.Sockets详细:0:[0244]退出插座#56654665 ::发送() - > 204#204
的System.Net.Sockets详细: 0:[0244]插孔#56654665 ::接收()
的System.Net.Sockets详细:0:[0244]数据从插槽#56654665 ::接收
的System.Net.Sockets详细:0: 00000000:14 03 00 00 01:.....
级的System.Net.Sockets详细:0:[0244]退出插座#56654665 ::接收() - > 5#5
的System.Net.Sockets详细:0:[0244]插孔#56654665: :接收()
的System.Net.Sockets详细:0:[0244]数据从插槽#56654665 ::接收
的System.Net.Sockets详细:0:[0244] 00000005:01:。
的System.Net.Sockets详细:0:[0244]退出插座#56654665 ::接收() - > 1#1
System.Net信息0:[0244]的InitializeSecurityContext(凭证=系统。 Net.SafeFreeCredential_SECURITY,上下文= b2310:174420,目标名称= transform.documentmailbox.net,inFlags = ReplayDetect,SequenceDetect,保密性,AllocateMemory,InitManualCredValidation)
System.Net信息0:[0244]的InitializeSecurityContext(在缓冲器计数= 2,Out-Buffer length = 0,返回码= ContinueNeeded)。
的System.Net.Sockets详细:0:[0244]插孔#56654665 ::接收()
的System.Net.Sockets详细:0:[0244]数据从插槽#56654665 ::接收
的System.Net.Sockets详细:0:[0244] 00000000:16 03 00 00 38:.... 8级
的System.Net.Sockets详细:0:[0244]退出插座#56654665 ::接收() - > 5#5
System.Net.Sockets Verbose:0:Socket#56654665 :: Receive()
的System.Net.Sockets详细:0:[0244]数据从插槽#56654665 ::接收
的System.Net.Sockets详细:0:[0244] 00000005:C0 44 EB FF 6A 88 AD DA -2C 5A 74 99 AD 11 CE 16:.D..j ...,Zt .....
System.Net.Sockets Verbose:0:00000015:4B 10 29 D7 DD 4E A0 83-E9 DE EB BD 37 2F 81 FB:K。).. N ...... 7/..
详细信息System.Net.Sockets:0:00000025:D4 9C 99 6C FB A0 CA 6B-1A 4E 7A CA B9 39 1B 91:... l ... k.Nz..9 ..
System.Net。套接字详细:0:00000035:7B 26 B1 01 8C FD C1 08-:{& ......
System.Net.Sockets详细:0:退出套接字#56654665 ::接收() - > 56 56#
System.Net信息0:[0244]的InitializeSecurityContext(凭证= System.Net.SafeFreeCredential_SECURITY,上下文= b2310:174420,目标名称= transform.documentmailbox.net,inFlags = ReplayDetect, SequenceDetect,Confidentiality,AllocateMemory,InitManualCredValidation)
System.Net信息:0:InitializeSecurityContext(In-Buffers count = 2,Out-Buffer length = 0,返回码= OK)。
既然你问的故障排除提示,并没有一个明确的答案,我会后这是一个答案,但借此为它的价值......
基于这样的事实:一些服务器可以访问这个和其他人不能,我敢打赌,这个问题仍然是在证书上的信任问题。
证书可能已经由Verisign发布的,并且很可能是大多数机器上值得信赖的,但也不不意味着它是可信任的所有机器上。
我们在6个月前更新了主要Web服务器上的证书时遇到了类似的问题。我们接受了来自客户的几个电话,并且在每种情况下,解决方案都是让他们进入Windows更新并查找根证书更新或谷歌以获取最新更新,然后从Microsoft下载。显然,出于某种原因,根证书更新并不总是在正常的更新过程中应用。
您是否知道是否有方法可以判断Windows 2003服务器是否具有最新的Root Certs?假设保持这些最新的服务已安装。 Windows Update站点只有XP的证书更新包。感谢您的建议。 – Tim 2011-03-18 18:27:54
我不知道如何分辨。这可能是Serverfault.com上的问题,但我确实知道你可以找到最新的根证书更新,搜索Microsoft下载站点http://www.microsoft.com/downloads/en/results.aspx? FREETEXT =根证书+ +更新&displaylang = EN&S型= s_basic – David 2011-03-18 22:40:47