Ответ 1
Ваш вопрос № 1
Как создать безопасный (TLS/SSL) веб-сервер?
Я нашел ваш вопрос во время поиска в Интернете для руководства о том, как заставить веб-сайты работать над защищенным подключением. Поскольку это произошло в результатах поиска, есть шанс, что я не единственный, кто попал на эту страницу. Чтобы спасти всех (включая будущее меня) некоторое время, здесь идет.
Проблема
У меня был простой сервер node.js websocket, приведенный в действие einaros/ws, прослушивающий порт 80 по незащищенному соединению. Пришлось переключить его на безопасное соединение.
Решение
В принципе, вторая ссылка, которую вы предоставили, охватывает почти все, что мне нужно знать. Вот несколько вещей, которые потребовали мне времени, чтобы понять:
-
Мне нужны файлы
.pem
для этого, но все, что я получил от поставщика сертификатов, было простым файлом.crt
/.cert
, и у меня также был закрытый.key
, который я получил после создания начальный.csr
запрос. Итак здесь, как конвертировать (кредит в slf):openssl rsa -in server.key -text > private.pem openssl x509 -inform PEM -in server.crt > public.pem
-
Мне было непонятно, как сделать
ws
использование защищенного соединения. Поскольку я пытался добавить SSL в существующее приложение, я хотел избежать необходимости повторять действия. Оказывается, все, что мне нужно было сделать, это заменить параметр{port:80}
ссылкой на экземплярhttps
(см. Ссылки для получения дополнительной информации о том, как его инициализировать).var ws = require('ws').Server; var wss = new ws({ server: httpsServer });
Ссылки
- github.com/websockets/ws/blob/master/examples/ssl.js
- chovy.com/web-development/self-signed-certs-with-secure-websockets-in-node-js
Ваш вопрос № 2
Что я хочу знать, так это достаточно, чтобы просто создать сам подписанный сертификат и развернуть его в моей производственной среде, или мне нужно купить сертификат как нам нужно делать при создании серверов HTTPS?
Акцент мой. Да, я бы посоветовал вам купить сертификат у доверенного органа. Это гарантирует, что ваши пользователи не получат никаких предупреждений о безопасности браузера, или просто уйдут, даже не зная, что пошло не так.