[英]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.