Я пытаюсь настроить WebSocket поверх TLS.
Для этого я собираюсь следовать указаниям на стр. 81 в следующей книге.
https://www.amazon.com/WebSocket-Client-Server-Communications-Andrew-Lombardi/dp/1449369278/ref=sr_1_1 ? keywords = websocket & qid = 1581782142 & sr = 8-1
Я устанавливаю код сервера, как говорится в книге. Все хорошо, но есть некоторые проблемы с сертификатами.
Согласно книге я должен предпринять четыре шага по настройке сертификатов
1. Generate a 2048 bit key.
openssl genrsa -des -passout pass:x -out server.pass.key 2048
2. Generate a passphrase free key.
openssl rsa -passin pass:x -in server.pass.key -out server.key
3. Generate csr from the private key.
openssl req -new -key server.key -out server.csr
4. Generate the certificate
openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt
Когда я запускаю шаг 1, я get error
"UI_set_result:result too small .."
Для которого исправление здесь .
Он, по сути, говорит, что вместо шага 1 нужно запустить следующий фрагмент кода:
openssl genpkey -algorithm RSA -pkeyopt rsa_keygen_bits:2048 -out server.key
Похоже, он пропускает часть .pass. Для чего предпринят шаг 2. Поэтому я не уверен, должен ли я сделать этот шаг или нет, после исправления.
Я выполняю эти четыре шага, затем на сервере. js У меня есть:
var connection={
ssl:true,
port:port_number_here,
ssl_key:'server.key',
ssl_cert:'server.crt'
}
//..
var processRequest=function(req,res){
res.writeHead(200);
res.end("Hi!\n");
//console.log('connecting');
};
var app=null;
app = httpsServ.createServer({
key: fs.readFileSync(connection.ssl_key),
cert:fs.readFileSync(connection.ssl_cert)
},processRequest).listen(connection.port);
var wss = new WebSocketServer({server:app});
var clients=[];
var client_number=0;
wss.on('connection', function(cclient_socket){
console.log('Estabished Connection with client.');
}
Тогда я запустить сервер с:
node server.js
Но когда я запускаю код клиента через Firefox, я получаю ошибку:
Firefox can’t establish a connection to the server at wss://somedomain:someportnumber/.
И в Chromium я получаю ошибку:
(index):9 WebSocket connection to 'wss://thedomain.org:theportnumber/'
failed: Error in connection establishment: net::ERR_CERT_AUTHORITY_INVALID
Я не уверен, что делать дальше. Я предполагаю, что я как-то не правильно сделал сертификаты, но ошибка не дает мне много работы.
Любая помощь будет оценена.
ps Я пытался реализовать следующие указания , безрезультатно.
{ ссылка }
Кроме того, у меня есть подозрение, что ошибка Chromium "ERR_CERT_AUTHORITY_INVALID" является ключевой вещью здесь. Я гуглил его и обнаружил, что https://www.guildcafe.com/fix-net-err_cert_authority_invalid-error.html это связано с центром сертификации. это только я. Я все еще застрял, хотя я не знаю, как это исправить.