我正在尝试连接到需要使用证书进行客户端身份验证的服务器。
我运行以下代码:
var tcpClient = new TcpClient("host", 443);
var sslStream = new SslStream(tcpClient.GetStream(), false,
new RemoteCertificateValidationCallback(ValidateServerCertificate),
new LocalCertificateSelectionCallback(SelectLocalCertificate));
X509Certificate certificate = new X509Certificate("pkcs12 file", "password");
X509CertificateCollection certificates = new X509CertificateCollection();
certificates.Add(certificate);
sslStream.AuthenticateAsClient("host", certificates, SslProtocols.Default, false);
SelectLocalCertificate返回适当的证书,并 ValidateServerCertificate始终返回true。
我正在使用.net core 2.1运行此代码,当我在Windows 10中运行此代码时,一切正常。 当我在Ubuntu 18.04中运行相同的代码时,出现异常并显示错误消息
“身份验证失败,因为远程方已关闭传输流”
我尝试了几件事。我已经更改了SslProtocols参数的值。 我试图运行更改ServicePointManager.SecurityProtocol的代码 没有成功。 在Windows 10上,我的代码工作正常,但在Ubuntu 18.04中,我遇到了先前的错误。