2011-03-18 132 views
2

我們有一個.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)。

回答

0

既然你問的故障排除提示,並沒有一個明確的答案,我會後這是一個答案,但藉此爲它的價值......

基於這樣的事實:一些服務器可以訪問這個和其他人不能,我敢打賭,這個問題仍然是在證書上的信任問題。

證書可能已經由Verisign發佈的,並且很可能是大多數機器上值得信賴的,但也不意味着它是可信任的所有機器上。

我們在6個月前更新了主要Web服務器上的證書時遇到了類似的問題。我們接受了來自客戶的幾個電話,並且在每種情況下,解決方案都是讓他們進入Windows更新並查找根證書更新或谷歌以獲取最新更新,然後從Microsoft下載。顯然,出於某種原因,根證書更新並不總是在正常的更新過程中應用。

+0

您是否知道是否有方法可以判斷Windows 2003服務器是否具有最新的Root Certs?假設保持這些最新的服務已安裝。 Windows Update站點只有XP的證書更新包。感謝您的建議。 – Tim 2011-03-18 18:27:54

+0

我不知道如何分辨。這可能是Serverfault.com上的問題,但我確實知道你可以找到最新的根證書更新,搜索Microsoft下載站點http://www.microsoft.com/downloads/en/results.aspx? FREETEXT =根證書+ +更新&displaylang = EN&S型= s_basic – David 2011-03-18 22:40:47

相關問題