首页 > 解决方案 > NodeJs - 安全的 Web Socket 和客户端连接

问题描述

我需要在安全 websocket 中使用 websocket 转换应用程序。(在 windows 下)我使用 nodeJs 作为 websocket 服务器和一个简单的 html 页面来连接它。

在谷歌和这里搜索,我发现了这种方法:

为服务器创建证书和密钥。我遵循了本教程:

https://www.cloudinsidr.com/content/how-to-install-the-most-recent-version-of-openssl-on-windows-10-in-64-bit/

创建 .key 和 .pem 后,我修改了我的 nodejs websocket 服务器以引入证书:

const httpsOptions = {
   key: fs.readFileSync('./api/security/cert.key'),
   cert: fs.readFileSync('./api/security/cert.pem')
}

this._http              = require('http');
this._server = this._http.createServer(httpsOptions , function(req, res) { this.closeCurrentConnections(req,res)}.bind(this));

var serverConfig = {
      server: this._server,
      autoAcceptConnections: false
}
this._wsServer = new WebSocketServer(serverConfig);

当我启动 nodejs 时,Websocket 服务器似乎启动了

现在,在客户端页面中,我有以下代码:

var websocket_server    = "ws://localhost:8128";
var echo_service        = new WebSocket(websocket_server,"echo-protocol"); 

[...]

我使用以下代码更改了它,通过 HTTPS 而不是简单的 HTTP 调用此页面:

var websocket_server    = "wss://localhost:8128";
var echo_service        = new WebSocket(websocket_server,"echo-protocol"); 

[...]

我在客户端页面上遇到错误:

testing_page.html:283 WebSocket connection to 'wss://localhost:8128/' failed: Error in connection establishment: net::ERR_SSL_PROTOCOL_ERROR

我认为是由于缺少证书。我试图在 chrome 上导入我以前的创建证书,但我无法导入,因为 chrome 正在考虑 .crt 和/或其他格式。我试图强制 .pem 但它不起作用。

我缺少什么?

在此处输入图像描述

标签: node.jswebsocket

解决方案


推荐阅读