2014-04-28 55 views
5

這種情況發生在sslStream.AuthenticateAsServer(serverCertificate, true, SslProtocols.Default, true); 調用中。驗證失敗,因爲遠程方已關閉傳輸流

我正在嘗試做客戶端認證。我控制客戶端和服務器,都是通過sslstream的C#。 當我使用nodejs服務器時,它完美地工作。但我不能讓服務器端在c#中可靠地工作,出於某種原因。很明顯,ssl認證需要等待客戶端選擇客戶端證書,但顯然這不是c#sslstream類的內置功能? 我已經嘗試過呼叫之前這樣做,但它仍然立即錯誤出在電話:

enter image description here

我不介意在IE的安全問題。沒關係。我擔心sslstream似乎根本不適用於這樣一個基本的szenario。從WCF跟蹤

錯誤:

System.Net Error: 0 : [7928] Exception in AppDomain#13869071::UnhandledExceptionHandler - Authentication failed because the remote party has closed the transport stream.. at System.Net.Security.SslState.ValidateCreateContext(Boolean isServer, String targetHost, SslProtocols enabledSslProtocols, X509Certificate serverCertificate, X509CertificateCollection clientCertificates, Boolean remoteCertRequired, Boolean checkCertRevocationStatus, Boolean checkCertName) at System.Net.Security.SslStream.AuthenticateAsServer(X509Certificate serverCertificate, Boolean clientCertificateRequired, SslProtocols enabledSslProtocols, Boolean checkCertificateRevocation)

+0

可能是因爲這樣,不知道如何解決:吊銷功能無法檢查吊銷證書 – Blub

+0

OK,就是這樣,我禁用CLR檢查。 – Blub

+0

hm不,IE仍然在我的服務器端導致這個問題。我添加了wcf跟蹤 – Blub

回答

1

添加下面的代碼,幫助我克服了這個問題(我運行在.NET 4.5.1應用程序)。

ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls11; 
相關問題