У меня есть веб-страница HTTPS, которая не позволяет мне подключаться к небезопасной веб-розетке, которую я использовал для связи с сервером узлов, поэтому я пытаюсь перенести свой сервер узлов на https. Страница https на стороне клиента была предоставлена мне для интеграции моей ранее небезопасной страницы, поэтому я ничего не знаю о сертификатах, которые она использует, если это имеет значение.
Чтобы подключиться к нему, на стороне клиента я использовал connection = new Websocket('ws://node_server_address')
, который отлично работал для небезопасных соединений. Теперь, когда страница использует https, я просто использую connection = new Websocket('wss://node_server_address')
, и я надеюсь, что это все, что мне нужно изменить на стороне клиента. Однако при наличии самозаверяющих сертификатов на сервере узлов я получаю эту ошибку при попытке подключиться к Chrome:
Websocket connection to 'wss://address' failed: Error in connection establishment: net::ERR_CERT_AUTHORITY_INVALID
В Firefox все, что он говорит мне, это то, что он не может подключиться к серверу. Я видел множество примеров, когда они вообще не указывают CA, и они предположительно работают нормально, поэтому я надеюсь, что мне не придется с этим связываться. Тем не менее, если предположить, что единственное решение состоит в том, чтобы указать какой-либо действительный центр сертификации, как мне сгенерировать его для самозаверяющего сертификата?
Узловой сервер:
const https = require('https');
const WebSocketServer = require('websocket').server;
process.env.NODE_TLS_REJECT_UNAUTHORIZED = "0";
let serverOptions = {
key: fs.readFileSync("./self-signed.key"),
cert: fs.readFileSync("./self-signed.cert"),
requestCert: false,
rejectUnauthorized: false
}
const server = https.createServer(serverOptions, (req, res) => { res.end('') });
server.listen(port, function() { /* Logging */ }
const wsServer = new WebSocketServer({
httpServer:server
});