(Node.js) Проблема с сервером SSL Express - PullRequest
0 голосов
/ 03 марта 2020

У меня есть следующий код:

const http = require('http');                            
const https = require('https'); 
const server = http.Server(app);                         // ssl commented
const socket = require('socket.io')(server);             // ssl commented
const WebSocket = require('ws');
const fs = require('fs');

const PORT = 80;

// we will pass our 'app' to 'https' server
// const server = https.createServer({
//    key: fs.readFileSync(__dirname+'/configuration/key.pem'),
//    cert: fs.readFileSync(__dirname+'/configuration/cert.pem'),
//    passphrase: '<you wish!>'
// }, app)
//
// server.listen(PORT, function(){
//   console.log(`Listening on http://localhost:${PORT}`);
//   //vncClient = new WebSocket.Server({server: server});
//   vncClient = new WebSocket.Server({port: 3000});
//   vncClient.on('connection', new_client);
// });
// const socket = require('socket.io')(server);

server.listen(PORT, function(){                          // ssl commented
  console.log(`Listening on http://localhost:${PORT}`);  // ssl commented
  vncClient = new WebSocket.Server({port: 3000});        // ssl commented
  vncClient.on('connection', new_client);                // ssl commented
});                                                      // ssl commented

Когда я переключаю комментирование (т.е. фактические закомментированные строки не комментируются, а «ssl закомментированные» строки фактически комментируются), я получаю нормальный вывод на консоль (нет ошибки), но в браузере ничего не отображается. Почему я могу создать сервер http, а не https? Я сгенерировал .pem с OpenSSL

1 Ответ

0 голосов
/ 04 марта 2020

Я могу запустить сервер HTTPS с помощью модуля узла https. Сгенерированные самоподписанные сертификаты, используя следующие шаги:

openssl req -x509 -newkey rsa:4096 -sha256 -days 3650 -nodes -keyout example.key -out example.crt

Убедитесь, что для самоподписанного у вас есть правильные имена CN. В моем случае это был localhost

Вот пример кода:

var app = require('express')();
const http = require('http');
const https = require('https');
var path = require('path');
const WebSocket = require('ws');
const fs = require('fs');

const PORT = 8080;


const server = https.createServer({
   key: fs.readFileSync(path.resolve(__dirname+'/example.key')),
   cert: fs.readFileSync(path.resolve(__dirname+'/example.crt')),
   rejectUnauthorized: false
}, app)



server.listen(PORT, function(){
  console.log(`Listening on https://localhost:${PORT}`);
  //vncClient = new WebSocket.Server({server: server});
//  vncClient = new WebSocket.Server({port: 3000});
//  vncClient.on('connection', new_client);
});

var io = require('socket.io').listen(server);

io.sockets.on('connection',function (socket) {
console.log("listening..")
});

app.get("/", function(request, response){
     response.send("Hello World").status(200)
});
// server.listen(PORT, function(){                          // ssl commented
//     console.log(`Listening on http://localhost:${PORT}`);  // ssl commented
//     vncClient = new WebSocket.Server({port: 3000});        // ssl commented
//     vncClient.on('connection', new_client);                // ssl commented
// });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...