我有一个自签名证书,我想在我的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);
我到底会缺少什么?
这是我的控制台的镜头,除了
答案 0 :(得分:1)
我们让 websockets 服务器使用 TLS 1.2。
手动添加:
ws.SslConfiguration.EnabledSslProtocols = System.Security.Authentication.SslProtocols.Tls12;
解决了这个问题。