我基于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.IsMutuallyAuthenticated
,sslStream.IsSigned
和sslStream.IsEncrypted
都会返回true
。
在服务器端调用
sslStream.AuthenticateAsServer(this.Certificate, true, SslProtocols.Tls, false); // thows AuthentificationException as expected...
正如预期的那样,会产生AuthentificationException
。
当客户端证书无法在服务器端验证时,如何使AuthenticateAsClient
- 调用抛出异常,就像预期的那样。我希望调用AuthenticateAsClient
和AuthenticateAsServer
都抛出AuthentificationException
,但它似乎只发生在服务器上。或者我错了吗?
可能它与服务器的并行化客户端处理有关。我想Authentification不同步或者某事,但我不知道如何解决这个问题。