我已经使用Laradock进行本地开发已有几周了,最近需要利用HTTPS来使Google在集成社交登录时回调给我。
我使用WSL2在Windows上进行开发,并对我的主机文件进行了更改:
127.0.0.1 tinker-dev.com
到http
的任何正常tinker-dev.com
流量都能正确路由,我看到我的应用程序很好!
我做了一些阅读,发现我需要一个由权威机构签名并贴在mkcert上的SSL证书,看来应该可以完成。完成安装后,我cd
进入nginx/ssl
文件夹,该文件夹通过NGINX_SSL_PATH=./nginx/ssl/
.env
var挂载到Laradocks nginx ssl目录中,然后我运行mkcert tinker-dev.com localhost 127.0.0.1 0.0.0.0 ::1
到产生可用于授权来自这些域的请求的证书和密钥(这产生了两个文件:tinker-dev.com+4.pem
和tinker-dev.com+4-key.pem
然后我修改了default.conf
中的sites-available
以利用这些证书:
# For https
listen 443 ssl;
listen [::]:443 ssl ipv6only=on;
ssl_certificate /etc/nginx/ssl/tinker-dev.com+4.pem;
ssl_certificate_key /etc/nginx/ssl/tinker-dev.com+4-key.pem;
并修改了laradocks startup.sh
,以删除在加载时自动生成SSL证书的块(如果未找到default.crtis)
#if [ ! -f /etc/nginx/ssl/default.crt ]; then
# openssl genrsa -out "/etc/nginx/ssl/default.key" 2048
# openssl req -new -key "/etc/nginx/ssl/default.key" -out "/etc/nginx/ssl/default.csr" -subj "/CN=default/O=default/C=UK"
# openssl x509 -req -days 365 -in "/etc/nginx/ssl/default.csr" -signkey "/etc/nginx/ssl/default.key" -#out "/etc/nginx/ssl/default.crt"
#fi
然后,我启动了容器,发现日志中没有错误,但是到https://tinker-dev.com
的任何流量都导致访问日志中没有流量记录(http流量仍然使用域记录)...我还意识到,对于任何403
流量,我都遇到https
错误。
我运行nginx -T
来检查加载了哪个配置,我可以看到它正在使用我的证书/密钥,如果执行了cat /etc/nginx/ssl/tinker-dev.com+4.pem
,它将打印证书,因此可以确定它们是被安装到容器中(如果我拿到钥匙,结果相同)
我在这里做其他任何明显错误的事情吗?我不是一个乐于助人的人,这些东西对我来说都是相对较新的。
答案 0 :(得分:0)
我遇到了完全相同的问题。在Windows 10版本2004中,WSL2 became available允许您使用Docker Desktop with WSL2。
我还安装了VMWare Workstation14.x。在决定(勉强地)卸载VMWare Workstation之前,我经历了数周的挫折。这立即解决了我的问题。我尝试重新安装VMWare,但是导致问题再次出现。我还尝试在“虚拟网络编辑器”中删除所有虚拟网络,但这并没有什么不同。
如果检查NGINX容器访问日志,则会看到NGINX从未收到通过SSL发出的连接请求-奇怪的是,HTTP请求似乎可以正常工作。此外,浏览器还会显示来自VMWare的证书。不幸的是,我花了很多时间来寻找解决此问题的方法,但是除了卸载VMWare Workstation之外,没有找到其他解决方法。我希望这至少可以使您走上正确的轨道。