在Laravel Homestead上使用SSL

12

我正在使用 Laravel Homestead 并且一切工作正常。现在我想在我的一个网站上实现 HTTPS。

我发现只需将 ssl: true 添加到 Homestead.yaml 中,然后运行 vagrant reload --provision 即可实现。

当我运行上述命令时,我可以看到它正在工作,显示如下:

==> homestead-7: Running provisioner: shell...
    homestead-7: Running: script: Creating Certificate: laravel-cashier.local
==> homestead-7: Running provisioner: shell...
    homestead-7: Running: script: Creating Site: laravel-cashier.local

而在/etc/nginx/ssl中,我可以看到这3个文件被创建:

-rw-r--r-- 1 root root  683 Jul 19 16:26 laravel-cashier.local.cnf
-rw-r--r-- 1 root root 1269 Jul 19 16:26 laravel-cashier.local.crt
-rw-r--r-- 1 root root 1704 Jul 19 16:26 laravel-cashier.local.key

接下来该怎么做呢?

当我试图用https运行网站时:

输入图片描述

输入图片描述

输入图片描述

我需要做其他步骤吗?

注意:我正在使用最新的Homestead 2.1.0版本。

我已经看过很多帖子,但我认为它们太旧了,没有提供确切的步骤来实现结果:

https://laracasts.com/discuss/channels/tips/tip-how-to-enable-ssl-in-homestead-20

https://laracasts.com/discuss/channels/servers/homestead-ssl

Laravel Homestead - SSL set up


你能否添加一些关于哪些方面不安全的细节?如果你点击地址栏中显示“不安全”的地方,你应该能够看到浏览器对这种情况不喜欢的具体原因。由于网站实际上是可以显示的,我猜测这不是SSL问题,但可能是因为你使用了自己生成的证书而导致浏览器不喜欢它。 - Chris Baldwin
@ChrisBaldwin 已添加 - Parth Vora
还要检查控制台是否有任何消息。 - Chris Baldwin
控制台没有任何输出。 - Parth Vora
你能否从开发者工具中添加安全选项卡? - Chris Baldwin
显示剩余4条评论
4个回答

15

我假设您正在使用Windows + Vagrant虚拟机以及Homestead

在这种情况下,laravel-cashier.local是您的Web应用程序。

您需要将证书复制到Vagrant中,在Nginx外部文件夹中:

$ sudo cp /etc/nginx/ssl/laravel-cashier.local.crt ~/laravel-cashier/laravel-cashier.local.crt

在Windows环境中,您可以通过双击安装此证书,并选择下一个特定存储位置:

受信任的根证书颁发机构

重新启动浏览器。完成。

有关如何添加证书的更多信息:https://technet.microsoft.com/en-us/library/cc754841(v=ws.11).aspx#BKMK_addlocal

注意:这仅适用于特定浏览器:Google Chrome


2
这真是救了我的命 - Kerry Jones
适用于我的是 https://mypcname.local:44300/,正如在此处提到的:https://laracasts.com/discuss/channels/servers/homestead-ssl/replies/308399 我不知道指定端口(44300)很重要。我的 hosts 文件中有 192.168.10.10 mypcname.local - Ryan
2
对我来说起作用的是,在按照这些步骤操作时复制根证书 - ca.homestead.homestead.crt。 - Tim Ramsey
2
只有在导入了两个证书 /etc/nginx/ssl/ca.homestead.homestead.crt/etc/nginx/ssl/mypage.test.crt 后,才适用于我。 - Alexander Taubenkorb
@AlexanderTaubenkorb和Tim Ramsey - 非常感谢!复制两个证书对我也起作用了。 - w5m
显示剩余6条评论

3

这虽然只是一个一年前的问题,但感觉它已经是个历史老问题了。

首先 - 在'laravel/homestead' vagrant box版本6.1.0中,您不需要任何ssl:true,因为它默认已经启用了,但是您的浏览器无论如何也不知道它是否可以信任ssl证书。

浏览器信任是与laravel和homestead不同的问题,请参见这篇答案来解决它。


1

正如我在评论中最初怀疑和提到的那样。您的SSL配置似乎是正确的,因为它报告连接是安全的。您正在使用自签名证书,这对于开发来说是可以的,但它没有被公认的证书颁发机构签名,因此浏览器将不信任它。然而,一旦您将项目部署给大众,您将需要从公认的证书颁发机构购买证书。一旦您拥有了该证书,此错误将消失。


好的,我能在本地开发环境上使用完全功能的SSL证书吗?我正在使用Nginx。 - Parth Vora
从技术上讲,SSL连接正在工作。连接是加密的。浏览器试图引起您的注意的是,使用的证书未经浏览器认可的证书颁发机构验证。在开发中,这不应该是一个问题,因为您知道证书来自哪里。一旦公众可以访问您的网站,那么您将希望更改它,以便其他人知道他们可以信任您的网站。 - Chris Baldwin
你可以随时从证书颁发机构购买证书用于开发,但对我来说,这似乎是一笔不必要的开发费用。 - Chris Baldwin

0
如果您使用 Laravel 8 Homestead 并且使用像 Cashier/Stripe 这样的包,那么在 Firefox 中的一个好的解决方法是为您的服务器应用证书例外。查询 "about:preferences",然后搜索证书并添加例外。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接