我們有一個.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)。
您是否知道是否有方法可以判斷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