将客户端证书与 WebSocket4Net 一起使用

Posted

技术标签:

【中文标题】将客户端证书与 WebSocket4Net 一起使用【英文标题】:Using client certificate with WebSocket4Net 【发布时间】:2015-05-01 07:51:55 【问题描述】:

我的服务器是使用 SuperWebSocket 运行的,服务器代码如下:

var server = new WebSocketServer();
var config = new ServerConfig();
config.Port = 4015;
config.Security = "Tls";
config.Certificate = new CertificateConfig
    FilePath = serverConfiguration.Certificate.Path,
    ClientCertificateRequired = true
            
server.Setup(config);
server.Start();

对于客户端,我正在尝试使用 WebSocket4Net,并且我正在尝试配置客户端应该提供的证书,但当前客户端代码是:

var client = new WebSocket("wss://localhost:4015, "basic", WebSocketVersion.Rfc6455);
client.Open();

【问题讨论】:

【参考方案1】:

正如您在服务器配置中所述,您的客户端需要使用证书进行身份验证。但我在您的客户端连接中看不到任何证书。

事实上,我看不到指定这些证书的方法。 我浏览了 github 上的资源,发现 SuperWebSocket4Net 是基于 SuperSocket ClientEngine 构建的(来自同一作者)。在 ClientEngine 中有一个名为 SslStreamTcpSession 的类。这里创建了 SLL 客户端并用于身份验证,在这里您可以放置​​您的证书。 也许我们可以要求the author 增加一个功能:为客户端身份验证设置证书的机会。

【讨论】:

我终于如前所述在 SuperWebSocket4Net 中进行了一些代码更改,我现在可以成功使用 WSS(安全 Web 套接字)。如果有人有兴趣,我可以分享我的技巧。 我很感兴趣。请分享你的技巧。 - 卡利安

以上是关于将客户端证书与 WebSocket4Net 一起使用的主要内容,如果未能解决你的问题,请参考以下文章

将客户端证书与 urllib2 一起使用

Websocket客户端断开websocket4net

SuperWebSocket实现服务端和WebSocket4Net实现客户端

使用 WebSocket4Net 的 Http 身份验证

与 Xamarin.Forms Android 项目建立 WebSocket4Net 连接时遇到问题

WCF 自签名证书在客户端上不受信任