簡體   English   中英

Mkcert 在節點 docker 容器上生成了 rootCA,Browsersync 超過 https 不安全

[英]Mkcert generated rootCA on Node docker container, with Browsersync over https insecure

我在一個容器中通過端口 80 和 443 運行 Nginx,后者使用 mkcert 生成的SSL證書。 這非常有效。

在另一個容器中,我正在運行 Node ,它又運行 Gulp ,后者又運行Browsersync

我的 Gulp 文件在 Node 容器中運行,它向我的本地計算機打開端口 3000 並代理本地主機,以便: https://localhost 從 Nginx 容器運行。 https://localhost:3000 使用 Browsersync 從 Node 容器運行

除了節點容器無法通過代理安全地顯示網站這一事實外,這是有效的。

閱讀更多關於 Node 認證可能發生的事情,我在 mkcert 找到了這個

使用 Node.js 的根

Node 不使用系統根存儲,因此它不會自動接受 mkcert 證書。 相反,您必須設置 NODE_EXTRA_CA_CERTS 環境變量。

導出 NODE_EXTRA_CA_CERTS="$(mkcert -CAROOT)/rootCA.pem"

所以我知道我需要在我的節點容器上使用 rootCA.pen,這應該是它的結尾。

在 Dockerfile 構建節點容器

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 的環境變量。

為了安全起見,進入 Node 容器后,檢查 rootCA.pem 是否存在,我終止節點進程並再次運行導出!

運行 gulp 文件:

function server(done) {
  browser.init({
    proxy: "https://nginx",
    open: false,
    https: true
  });
  done();
}

Browsersync 加載,我看到了......

[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 時遇到 SSL 問題的任何人,您可能希望明確指向您的自定義證書和密鑰。

browserSync( {
    proxy: "https://localhost/mysite/",
    https: {
        key: "W:/xampp/htdocs/mkcert/localhost/localhost.key",
        cert: "W:/xampp/htdocs/mkcert/localhost/localhost.crt"
    }
});

注意:我使用的是 xampp,它安裝在 W:/ 驅動器上。

您可以在此處了解更多信息

HTH

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM