【问题标题】:Use SSL on Laravel Homestead在 Laravel Homestead 上使用 SSL
【发布时间】:2017-07-23 08:52:27
【问题描述】:

我正在使用 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 问题,但它可能不喜欢您自己生成的证书。
  • @ChrisBaldwin 已添加
  • 同时检查控制台是否有任何消息。
  • 控制台上没有任何内容
  • 你能从开发者工具中添加安全标签吗?

标签: laravel ssl laravel-5 https homestead


【解决方案1】:

我假设您使用的是 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

注意:这对特定浏览器有效:谷歌浏览器

【讨论】:

  • 这只是救了我的命
  • 对我有用的是mypcname.local:44300,如此处所述:laracasts.com/discuss/channels/servers/homestead-ssl/replies/… 我不知道指定端口 (44300) 很重要。我的主机文件有192.168.10.10 mypcname.local
  • 这对我仍然不起作用。这些步骤看起来很合理,但我已经尝试了很多次,即使它是通过 https 提供的(通过 Homestead 的 44300 端口),我的本地站点仍然显示“不安全”。
  • 对我有用的是在执行这些步骤时复制根证书 - ca.homestead.homestead.crt
  • 只有在我导入两个证书后才为我工作:/etc/nginx/ssl/ca.homestead.homestead.crt/etc/nginx/ssl/mypage.test.crt
【解决方案2】:

这只是一岁的问题,但感觉就像是一个非常古老的问题。

Fist - 使用 6.1.0 版本的 'laravel/homestead" vagrant box,您不需要任何 ssl: true,默认情况下它是活动的,但是您的浏览器无论如何都不知道它是否可以信任 ssl 证书。

浏览器信任问题与 laravel 和 homestead 不同,请看this 回答解决。

【讨论】:

    【解决方案3】:

    正如我第一次怀疑并在我的评论中提到的那样。您的 SSL 配置似乎正确,因为它报告连接是安全的。您正在使用自签名证书,这对开发来说很好,但它没有由公认的证书颁发机构签名,因此浏览器不会信任它。但是,一旦您将项目部署到公众,您将需要从公认的证书颁发机构购买证书。获得该证书后,此错误就会消失。

    【讨论】:

    • 好的,有什么方法可以让我在本地开发中获得功能齐全的 SSL 证书?我正在使用 Nginx。
    • 从技术上讲,SSL 连接工作正常。连接已加密。浏览器试图引起您注意的是,正在使用的证书尚未经过浏览器识别的证书颁发机构的验证。在开发中这应该不是问题,因为您知道证书的来源。让公众访问您的网站后,您将希望对其进行更改,以便其他人知道他们可以信任您的网站。
    • 您可以随时从证书颁发机构购买证书以用于开发,但这对我来说似乎是不必要的开发费用。
    【解决方案4】:

    如果您将 Laravel 8 Homestead 与 Cashier/Stripe 等软件包一起使用,Firefox 的一个很好的解决方法是为您的服务器应用认证例外,查询“about:preferences”,然后搜索证书并添加例外。

    【讨论】:

      猜你喜欢
      • 2014-10-22
      • 2015-02-15
      • 2020-04-25
      • 2016-10-24
      • 2016-09-09
      • 2017-09-06
      • 2020-08-13
      • 1970-01-01
      • 2014-08-26
      相关资源
      最近更新 更多