我正在制作一个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,您是我唯一的希望。