身份验证失败,因为远程方已关闭传输流

Blu*_*lub 5 c# authentication ssl

这发生在sslStream.AuthenticateAsServer(serverCertificate, true, SslProtocols.Default, true); 通话中.

我正在尝试进行客户端身份验证.我控制客户端和服务器,两者都是通过sslstream的c#.当我使用nodejs服务器时,它完美地工作.但由于某些原因,我无法让服务器端可靠地在c#中工作.显然,ssl身份验证需要等待客户端选择客户端证书,但显然这不是c#sslstream类的内置功能?我在调用之前已经尝试过这样做,但它仍然会立即出现错误:

在此输入图像描述

我不介意IE中的安全问题.没关系.我关心的是,sslstream似乎根本不适用于这样一个基本的szenario.

wcf跟踪出错:

System.Net错误:0:[7928] AppDomain中的异常#13869071 :: UnhandledExceptionHandler - 身份验证失败,因为远程方已关闭传输流..在System.Net.Security.SslState.ValidateCreateContext(Boolean isServer,String targetHost,SslProtocols enabledSslProtocols,X509证书serverCertificate,X509CertificateCollection clientCertificates,布尔remoteCertRequired,布尔checkCertRevocationStatus,布尔checkCertName)在System.Net.Security.SslStream.AuthenticateAsServer(x509证书serverCertificate,布尔clientCertificateRequired,SslProtocols enabledSslProtocols,布尔checkCertificateRevocation)

mur*_*uge 3

添加以下代码帮助我克服了这个问题(我在 .NET 4.5.1 中运行该应用程序)。

ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls11;
Run Code Online (Sandbox Code Playgroud)