Mkcert在Node docker容器上生成rootCA,使用Browsersync over https不安全.&l



我在端口80和443的一个容器中运行Nginx,后者使用mkcert生成SSL证书。

在另一个容器中,我运行Node, Node运行Gulp, Gulp运行Browsersync。

我的Gulp文件在Node容器中运行,它打开端口3000到我的本地机器并代理localhost,以便:https://localhost从Nginx容器运行。https://localhost:3000使用Browsersync

从Node容器中运行除了节点容器不能通过代理安全地显示网站之外,这是有效的。

阅读更多关于Node认证可能发生的事情,我在mkcert

找到这个

使用Node.js的根目录

Node不使用系统根存储,所以它不会接受mkcert自动证书。相反,您必须设置NODE_EXTRA_CA_CERTS环境变量

export NODE_EXTRA_CA_CERTS="$(mkcert -CAROOT)/rootCA.pem">

所以我知道我需要rootCA。在我的Node容器上的笔,这应该是结束。

在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的env变量。

为了安全起见,在进入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工作。但不能没有安全警告。

我错过了什么?

对于任何在使用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:/drive.

你可以在这里了解更多。

HTH

相关内容

  • 没有找到相关文章