NodeJs - Безопасный веб-сокет и клиентское соединение - PullRequest
0 голосов
/ 15 января 2020

Мне нужно конвертировать приложение с websocket в secure-websocket. (под windows) Я использую nodeJs в качестве сервера веб-сокетов и простую страницу 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, чтобы представить сертификат:

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);

Сервер Websocket появляется, когда я запускаю nodejs

Теперь на странице клиента у меня был этот код:

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...