Мне нужно конвертировать приложение с 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, но это не работает.
Что мне не хватает?