在提供无效证书时,AuthenticateAsClient不会抛出异常

时间:2015-01-29 09:25:58

标签: c# authentication tcpclient tcplistener sslstream

我基于TcpListener创建了一个服务器。使用ThreadPool并行处理传入连接。通信使用SslStreams进行相互身份验证。

目前,当有客户电话

var sslStream = new SslStream(client.GetStream(),
                            false,
                            this.ServerCertificateValidation,
                            (a, b, collection, d, e) => collection[0]);

sslStream.AuthenticateAsClient(Host, certCollection, protocols.Tls, false); // this does not throw an exception, even if the certCollection provides an invalid Certificate...

使用无效证书(collection[0])不会抛出任何异常,sslStream.IsMutuallyAuthenticatedsslStream.IsSignedsslStream.IsEncrypted都会返回true

在服务器端调用

sslStream.AuthenticateAsServer(this.Certificate, true, SslProtocols.Tls, false);  // thows AuthentificationException as expected...
正如预期的那样,

会产生AuthentificationException

当客户端证书无法在服务器端验证时,如何使AuthenticateAsClient - 调用抛出异常,就像预期的那样。我希望调用AuthenticateAsClientAuthenticateAsServer都抛出AuthentificationException,但它似乎只发生在服务器上。或者我错了吗?

可能它与服务器的并行化客户端处理有关。我想Authentification不同步或者某事,但我不知道如何解决这个问题。

0 个答案:

没有答案