настройка https cookie в nodejs
Я тоже пытаюсь настроить систему входа на свой сайт.
Слышал, что файлы cookie nodejs - хороший способ сделать это.
По следующим ссылкам:
https://stackoverflow.com/a/21809393/322537
https://nodejs.org/dist/latest-v8.x/docs/api/https.html
Я нашел пример того, как создаются https-серверы. Насколько я понимаю, функция createServer должна запускаться каждый раз, когда клиент делает запрос.
Итак, в моем коде есть следующее:
var server_https=modules.https.createServer({
key: this.ssl_key,
cert:this.ssl_cert
},this.respond_to_client).listen(this.port);
mconnection.prototype.respond_to_client=function(request,response){
console.log('responded to client');
}
Похоже, что сервер работает нормально, так как веб-сайт работает. Но respond_to_client функция появляется никогда не запускать файл журнала nodejs никогда не бывает не указывает на то, «ответил на клиента» строку.
Как такое могло быть? Может ли это иметь какое-то отношение к тому, что я обновляю https-сервер до веб-сокета вскоре после этого в коде?
обновление:
вот файл сервера:
https://openage.org/s.js
вот модуль подключения:
https://openage.org/c.js
а вот программа чата, которую обслуживают
https://openage.org/chat/14/?page=index
Затем планируется создать файлы cookie для идентификации клиентов, а затем настроить систему входа в систему. Но я застрял в этом. /:
Ответы
Я скопировал сценарии вашего узла для локального тестирования. Сначала я запустил что-то на http (vs https) и смог получить ответ нормально. Однако при переходе на https запрос никогда не принимается сервером. Браузер ДОЛЖЕН сначала установить безопасное соединение перед отправкой фактического запроса.
Я столкнулся с аналогичной проблемой при попытке запустить несколько серверов (https и ws) на одном порту. То, что у вас есть, очень близко, однако ваши настройки для https.createServer ({options}, handler) требуют корректировки.
Где у вас есть:
var server_https= https.createServer({
key: this.ssl_key,
cert:this.ssl_cert
},respond_to_client).listen(this.port);
Вам также необходимо добавить опцию для «ca»:
var server_https= https.createServer({
key: this.ssl_key,
cert: this.ssl_cert,
ca: this.ssl_ca, // also add this
},respond_to_client).listen(this.port);
Значение, которое я использовал для «ca», было содержимым файла: intermediate.crt, полученного от центра подписи сертификатов.
ВАЖНЫЙ
Хотя это может быть возможно с помощью самозаверяющего сертификата, мне никогда не удавалось сделать это, так как нет права подписи.
Так же, как вы сделали для других файлов сертификатов, вы должны сделать это и для файла intermediate.crt.
//Where you read your other cert files: add another.
this.ssl_ca = modules.fs.readFileSync(this.ssl_ca_pathfile);
Я обнаружил, что это сложно и плохо документировано. Я не эксперт по SSL / TSL, но быстрый поиск промежуточного сертификата появляется:
Промежуточный сертификат - это подчиненный сертификат, выпущенный доверенным корнем специально для выдачи сертификатов сервера конечного объекта. В результате получается цепочка сертификатов, которая начинается в доверенном корневом ЦС, через промежуточный и заканчивается выданным вам сертификатом SSL. Такие сертификаты называются связанными корневыми сертификатами. Источник
Intermediate.crt будет иметь следующую структуру:
-----BEGIN CERTIFICATE-----
****
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
****
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
****
-----END CERTIFICATE-----
Вот ответ в браузере.