#node.js #express #security #ssl #tls1.2
#node.js #экспресс #Безопасность #ssl #tls1.2
Вопрос:
Я пытаюсь внедрить SSL в свой проект nodejs. В настоящее время мои серверы разделены между клиентским сервером, работающим на локальном хост-порту 443, и серверным сервером, работающим на локальном хост-порту 5000. Я уже добавил самозаверяющий SSL-сертификат OpenSSL на свой клиентский сервер, как показано ниже.
Теперь вот моя проблема. Насколько я понимаю, когда я отправляю запрос post для входа в систему, предполагается, что между сервером и клиентом должно произойти рукопожатие для установления безопасного соединения. Однако это не так. Когда я использовал Wireshark для перехвата пакетов, в процессе не происходит рукопожатия.
В настоящее время я не уверен, как действовать дальше, потому что у меня ограниченные знания по такого рода темам безопасности. Нужно ли мне подписывать новый ключ и сертификат и добавлять их на свой серверный сервер? Или я все делаю неправильно? Если да, могу ли я получить источник или руководство о том, как правильно создать его для сервера nodejs?
Ответ №1:
здесь у вас есть много вариантов защиты вашего внутреннего сервера :
во-первых, вы можете использовать обратный прокси-сервер Nginx и добавить к нему логику ssl / tls. nginx справится с этим за вас.
во-вторых, вы можете напрямую использовать пакет [https] [1] и передать ему свой SSL-сертификат и ключ :
const https = require('https');
const fs = require('fs');
const options = {
key: fs.readFileSync('test/fixtures/keys/agent2-key.pem'),
cert: fs.readFileSync('test/fixtures/keys/agent2-cert.pem')
};
https.createServer(options, (req, res) => {
res.writeHead(200);
res.end('hello worldn');
}).listen(8000);
помните, что доменное имя, к которому вы пытаетесь получить доступ, должно быть задано в вашем IP-адресе хоста.
[1]: https://nodejs.org/api/https.html