#node.js #ssl #gulp #browser-sync #mkcert
Вопрос:
Я запускаю Nginx в одном контейнере через порты 80 и 443, более поздние с сертификатами SSL, сгенерированными с помощью mkcert. Это чудесно работает.
В другом контейнере я запускаю узел, который, в свою очередь, запускает Gulp, который, в свою очередь, запускает Browsersync.
Мой файл Gulp запускается в контейнере узла, который открывает порт 3000 для моей локальной машины и прокси-сервера localhost, чтобы: https://localhost запускается из контейнера Nginx. https://localhost:3000 выполняется из контейнера узла с помощью Browsersync
Это работает, за исключением того факта, что контейнер узла не может безопасно отображать веб-сайт через прокси-сервер.
Читая больше о том, что может происходить с сертификатами Node, я нахожу это в mkcert
Используя корень с Node.js
Узел не использует корневое хранилище системы, поэтому он не будет автоматически принимать сертификаты mkcert. Вместо этого вам придется установить переменную среды NODE_EXTRA_CA_CERTS.
экспорт NODE_EXTRA_CA_CERTS=»$(mkcert -CAROOT)/RootCA.pem»
Поэтому я понимаю, что мне нужен RootCA.pen на моем контейнере узла, и на этом все должно закончиться.
В файле докеров для создания контейнера узла
FROM node:12.19.1-alpine3.9
RUN npm install -g gulp-cli@2.1.0
ADD ./nginx/certs /etc/ssl
RUN export NODE_EXTRA_CA_CERTS=/etc/ssl/rootCA.pem
Я беру все свои сертификаты, включая файл RootCA.pem, и сбрасываю их куда-нибудь в контейнер узла, в данном случае в /etc/ssl
Затем я устанавливаю значение параметра NODE_EXTRA_CA_CERTS.
На всякий случай, зайдя в контейнер узла, проверив, что RootCA.pem там, я отключаю процесс узла и снова запускаю экспорт!
Запуск файла gulp:
function server(done) {
browser.init({
proxy: "https://nginx",
open: false,
https: true
});
done();
}
Browsersync loads and I’m shown…
[Browsersync] Proxying: https://nginx
[Browsersync] Access URLs:
--------------------------------------
Local: https://localhost:3000
External: https://192.168.16.7:3000
--------------------------------------
UI: http://localhost:3001
UI External: http://localhost:3001
--------------------------------------
И я могу открыть https://localhost:3000 в браузере работает и browsersync. Но не без предупреждения службы безопасности.
Что я упускаю?