Mkcert сгенерировал RootCA в контейнере Node docker, при этом Browsersync по https небезопасен

#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. Но не без предупреждения службы безопасности.

Что я упускаю?