.net - 安全网络套接字 (WSS) 证书签名

标签 .net ssl websocket ssl-certificate x509certificate

我有一个网站 https://www.foo.com,在这个网站上,我使用 websocket 连接到其他机器(运行我们软件的机器的一些随机 IP 地址).即我连接到在 ws://123.45.67:80

上运行的 websocket

问题是该站点是通过 HTTPS 提供服务的,而我想连接到的 websocket 服务器也需要安全连接 (WSS),并且不能与常规 websocket (WS) 一起使用。

问题是:我如何签署将驻留在不在我的域中的每个 websocket 服务器上的证书?我可以使用来自主站点 https://www.foo.com 的证书为任意域上的 websocket 服务器签署 x509 证书吗?

我正在使用 Fleck作为 websocket 服务器

最佳答案

虽然问题似乎已经解决了(根据问题被问到的时间),我会为偶然发现这里的人添加一些链接。


  1. 决定,你想使用哪个证书

    • 使用 foo.com 的证书
      如果您想使用与您的页面相同的证书,则必须将 IP 地址添加到证书中(询问颁发者如何实现这一点,因为这主要取决于他们的基础设施。

    • 获取新证书
      就像您获得了现有证书一样,但是 with the IP address你的 websocket 机器。

    • 生成新的自签名证书
      如果您想生成一个自签名证书(它会在所有浏览器中发出警告,并且如果不首先手动信任它可能无法工作),只需 use OpenSSL to generate a self-signed certificate .

  2. 将证书添加到 Fleck 如 Fleck's Readme 中所述,您必须使用 wss:// 协议(protocol)(使用 var server = new WebSocketServer("wss://[IPAddress]:[Port]");)和使用 server.Certificate = new X509Certificate2("path/to/cert.pfx");

  3. 将 Fleck 指向您的证书(x509,公钥和私钥)

如果 IP 地址频繁更改,这将非常复杂(如果不是不可能的话)。然后我建议使用代理监听(子)域并处理 https/wss。然后应通过物理方式(如直接连接)或通过 VPN 保护代理和 websocket 机器之间的连接。


我希望,我已经回答了您的问题并且我的回答已经足够清楚了。如果没有,请随时评论我可以改进的地方。

关于.net - 安全网络套接字 (WSS) 证书签名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28205412/

相关文章:

node.js - 可以模拟多个并发连接来测试 nodejs 应用程序

.net - 在使用 select-xml 应用 XPath 表达式后,是否有可靠的方法来获取所选元素的名称

c# - 如何收听 TPL TaskStarted/TaskCompleted ETW 事件

http - 如何保护公网IP设备的web登录

node.js - nodejs 作为 websocket 客户端

android - 高速公路 websockets Android 演示崩溃

c# - C#中的隐式类型转换

c# - 包含多个项目的解决方案的 ClickOnce 部署

eclipse - 为什么 Eclipse 应用程序实例不会在 https 中运行

ruby - SSL_connect returned=1 errno=0 state=未知状态 : unknown protocol