无法使SslStream.AuthenticateAsClient与用户证书一起使用

时间:2018-08-01 05:13:48

标签: c# sslstream

我正在制作一个IRC-lib(或者经过4年的积尘才重新使用它)。

我想我会添加SASL EXTERNAL对身份验证的支持。

NetworkStream包裹在SslStream中,使一切正常,除了没有发送我的证书。

以下是处理连接的代码:

_cli = new TcpClient();
if (!_cli.Connected)
{
    _cli.NoDelay = true;

    var coll = new X509CertificateCollection();
    coll.Add(UserCertificate);
    _cli.Connect(ServerName, Port);
    _stream = _cli.GetStream();
    _sslStream = new SslStream(_stream, false, ValidateServerCertificate, PostUserCert);
    _sslStream.AuthenticateAsClient("not.the.actual.host", coll, SslProtocols.Tls12, false);
...

ValidateServerCertificate仅返回true以处理自签名证书(目前),而PostUserCert返回UserCertificate

我检查了我正在发送的证书是否有效,我从中获得了所需的所有信息。

但是当我连接到IRC服务器时,我没有证书指纹,并且_sslStream.LocalCertificate为空。

我真的不知道从现在开始要去哪里,我花了将近6个小时尝试调试它,直到我不得不入睡。

帮我StackOverflow,您是我唯一的希望。

0 个答案:

没有答案