我在一个容器中通过端口80和443运行Nginx,后者使用用mkcert生成的SSL证书。这工作得很好。
在另一个容器中,我运行Node,它依次运行Gulp,而后者又运行Browsersync。
我的Gulp文件在Node容器中运行,它将端口3000打开到我的本地机器和代理本地主机,这样:https://localhost从Nginx容器中运行。使用Browsersync从节点容器运行https://localhost:3000
除了节点容器无法通过代理安全地显示网站这一事实外,这是可行的。
阅读更多关于Node认证可能发生的事情时,我发现了这个在mkcert
与Node.js一起使用根 节点不使用系统根存储,因此它不会自动接受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的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,浏览器可以正常工作。但不是没有安全警告。
我遗漏了什么?
发布于 2022-04-17 20:24:11
对于在使用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
https://stackoverflow.com/questions/69583734
复制相似问题