Laradock,在本地主机上使用Nginx配置SSL

时间:2020-04-05 11:19:48

标签: docker ssl nginx ssl-certificate laradock

我已经使用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.pemtinker-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,它将打印证书,因此可以确定它们是被安装到容器中(如果我拿到钥匙,结果相同)

我在这里做其他任何明显错误的事情吗?我不是一个乐于助人的人,这些东西对我来说都是相对较新的。

1 个答案:

答案 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之外,没有找到其他解决方法。我希望这至少可以使您走上正确的轨道。