使用 ClientWebSocket 实现与 Websocket 服务器的安全 (SSL) 连接

Posted

技术标签:

【中文标题】使用 ClientWebSocket 实现与 Websocket 服务器的安全 (SSL) 连接【英文标题】:Using ClientWebSocket for Secured(SSL) connection to Websocket server 【发布时间】:2014-10-13 08:49:35 【问题描述】:

我尝试在 .Net 中搜索支持 SSL(和代理)的 echo 客户端的示例代码,我有不支持 SSL 和代理的简单 echo 客户端,但我需要使用证书实现 SSL 的客户端(自签名)

我正在使用 ClientWebSocket 进行连接(Websocket Server 在 java 中)。

如何在 websocket 客户端(.net)和服务器(java)之间共享相同的自签名证书?

我正在尝试寻找一些示例,但没有得到任何帮助,任何方向都会有很大帮助。

【问题讨论】:

【参考方案1】:

我不完全确定你到底在问什么,但是......

如果您想为客户端使用自签名证书,您需要使用手动验证该证书:ServicePointManager.ServerCertificateValidationCallback

为了测试,你可以这样做:

ServicePointManager.ServerCertificateValidationCallback = delegate  return true; ;

但是当迁移到生产环境时,您应该删除此代码或放入实际的认证验证代码。

【讨论】:

我正在做与您解释的相同的事情,但是当预期为“101”时,它给了我错误服务器返回的错误代码“200”。它在浏览器上正常工作(当我尝试连接到 websocket 服务器时) 200 不是错误码,表示 HTTP 请求成功。所以可能你正在做一些阻止接受 websocket 连接的事情(这将返回 101 代码)或者你只是连接到错误的端点/url(所以它假设一个正常的 GET 请求,因此返回一个 200 代码) .我认为这应该是第二种选择。您应该显示更多代码。

以上是关于使用 ClientWebSocket 实现与 Websocket 服务器的安全 (SSL) 连接的主要内容,如果未能解决你的问题,请参考以下文章

强制 HttpWebRequest 和 ClientWebSocket 使用 TLS 1.2

System.Net.WebSockets.ClientWebSocket 不能可靠地工作?

使用 ClientWebSocket .net 核心测试 TestHost.WebSocketClient

ClientWebSocket 示例挂起

使用 .Net ClientWebSocket 从 WebSocket 获取数据

ClientWebsocket SSL 证书验证失败