使用本地主机证书保护 websocket
Secure websocket with localhost certificate
我们的站点使用安全连接 (HTTPS),我们需要客户端与用户先前安装的后台程序 运行 通信(使用 Qt 制作)。我们打算使用 websockets,使用公司签名的证书来做到这一点。
CA 安装在 Windows 和 Mozilla 数据库中。
由于websocket在客户端运行,而websocket服务器也在客户端机器上运行,所以连接是在localhost上进行的。另外,因为我们使用 HTTPS,所以我们也必须使用 WSS。我们选择了2424端口。
问题是,Chrome,Firefox 和 IE 认为该连接不受信任,因为它位于本地主机上(我认为)。如果我在 https://127.0.0.1:2424
上打开一个新标签页,则会出现一条错误消息;浏览器表示该证书仅在本地主机上有效,这可能意味着有人可能试图拦截发送到服务器的数据(Firefox 错误代码:ssl_error_bad_cert_domain
)。
问题是证书颁发给 localhost
,而不是 127.0.0.1
。使用 IP 连接的 websocket,未被证书覆盖,因此将套接字地址从 wss://127.0.0.1:2424
更改为 wss://localhost:2424
有效,至少对于 Chrome 和 IE,但连接仍然被拒绝火狐.
我们的站点使用安全连接 (HTTPS),我们需要客户端与用户先前安装的后台程序 运行 通信(使用 Qt 制作)。我们打算使用 websockets,使用公司签名的证书来做到这一点。 CA 安装在 Windows 和 Mozilla 数据库中。
由于websocket在客户端运行,而websocket服务器也在客户端机器上运行,所以连接是在localhost上进行的。另外,因为我们使用 HTTPS,所以我们也必须使用 WSS。我们选择了2424端口。
问题是,Chrome,Firefox 和 IE 认为该连接不受信任,因为它位于本地主机上(我认为)。如果我在 https://127.0.0.1:2424
上打开一个新标签页,则会出现一条错误消息;浏览器表示该证书仅在本地主机上有效,这可能意味着有人可能试图拦截发送到服务器的数据(Firefox 错误代码:ssl_error_bad_cert_domain
)。
问题是证书颁发给 localhost
,而不是 127.0.0.1
。使用 IP 连接的 websocket,未被证书覆盖,因此将套接字地址从 wss://127.0.0.1:2424
更改为 wss://localhost:2424
有效,至少对于 Chrome 和 IE,但连接仍然被拒绝火狐.