处理证书时发生未知错误

时间:2019-06-27 00:33:55

标签: c# .net websocket ssl-certificate

我有一个自签名证书,我想在我的websockets服务器上使用它来处理来自wss:// localhost:443的请求。我可以从任何网络浏览器连接到服务器。

但是,我似乎无法获得正确的身份验证。每当我尝试通过Advanced Rest Client(ARC)软件连接到WebSockets服务器时,我都会键入 wss:// localhost:443 wss://127.0.0.1:443 >

我正在获取异常

System.Security.Authentication.AuthenticationException:对SSPI的调用失败,请参阅内部异常。---> System.ComponentModel.Win32Exception:处理证书时发生未知错误”。

我使用Windows的openssl创建了证书,并创建了一个非常简单的证书。我仍然无法获得正确的身份验证。有帮助吗?

这是如何尝试使用C#代码进行处理


var serverCertificate = new X509Certificate2("E:\\TestsFolder\\test-cert.pfx", "12345");
var certificates = new X509CertificateCollection { serverCertificate };

Stream stream = tcpClient.GetStream();

SslStream sslStream = new SslStream(stream, false,
                    (o, x509Certificate, chain, errors) => true,
                    (o, s, collection, x509Certificate, issuers) => certificates[0]);

await sslStream.AuthenticateAsServerAsync(serverCertificate, false, SslProtocols.Tls12, false);

WebSocketHttpContext context = await _webSocketServerFactory.ReadHttpHeaderFromStreamAsync(sslStream, source.Token);

我到底会缺少什么?

这是我的控制台的镜头,除了

enter image description here

1 个答案:

答案 0 :(得分:1)

我们让 websockets 服务器使用 TLS 1.2。

手动添加:

ws.SslConfiguration.EnabledSslProtocols = System.Security.Authentication.SslProtocols.Tls12;

解决了这个问题。