NodeJ-安全的Web套接字和客户端连接

时间:2020-01-15 14:01:00

标签: node.js websocket

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

我在google和此处进行搜索,发现了这种方法:

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

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,但它不起作用。

我缺少什么?

enter image description here

0 个答案:

没有答案