如何在本地Laravel Homestead网站上获得https证书

如何在本地Laravel Homestead网站上获得https证书,laravel,ssl,https,ssl-certificate,homestead,Laravel,Ssl,Https,Ssl Certificate,Homestead,我遇到了这个问题: 我在Windows 10 Chrome版本65.0.3325.181(官方版本)(64位)中看到的错误是: 你的连接不是私人的 攻击者可能试图窃取您的 来自((mysite))的信息(例如,密码、, 邮件或信用卡)。了解更多信息网络::错误证书权限无效 此页面不安全(HTTPS已损坏) 证书-丢失 这个 站点缺少有效的受信任证书 (网络::错误证书权限无效) Firefox Quantum 59.0.2(64位)说: 您的连接不安全 ((mysite))的所有者已配置其网站

我遇到了这个问题:

我在Windows 10 Chrome版本65.0.3325.181(官方版本)(64位)中看到的错误是:

你的连接不是私人的

攻击者可能试图窃取您的 来自((mysite))的信息(例如,密码、, 邮件或信用卡)。了解更多信息网络::错误证书权限无效

此页面不安全(HTTPS已损坏)

证书-丢失

这个 站点缺少有效的受信任证书 (网络::错误证书权限无效)

Firefox Quantum 59.0.2(64位)说:

您的连接不安全

((mysite))的所有者已配置其网站 不恰当。为了保护您的信息不被窃取,Firefox提供了 未连接到此网站

连接不安全

无法验证此证书,因为 发行人不详

我已经试过:

我想知道这是否意味着我还没有使用(它的变更日志中有“使用自定义根证书签署SSL证书”),我想知道这是否就是为什么我会有这个SSL HTTPS问题


要使证书正常工作,我现在应该采取哪些步骤?

您的问题是,颁发者未知。正如你在错误中提到的; 此站点缺少有效的受信任证书 或 此站点缺少有效的受信任证书(net::ERR\u CERT\u AUTHORITY\u INVALID)

让我们首先了解发生此错误的原因。浏览器具有受信任的证书颁发机构列表。您可以从不同浏览器的设置/首选项部分查看此列表。如果您的证书不是由这些机构之一颁发的,那么您将得到上述错误

在本地主机上修复它 我可以想出两种可能的解决办法

  • 将证书手动添加到浏览器中,它将开始使用https打开

  • 使用已受信任的颁发机构对证书进行签名。在本地服务器上安装证书。在/etc/hosts文件中配置与您已签署证书的域同名的主机
    我希望它能解决这个问题

    不幸的是,我没有一种简单的方法在Windows上检查它,所以我打算在这里使用Linux上运行的VirtualBox。安装Wagrant,然后:

    $ vagrant box add laravel/homestead
    $ git clone https://github.com/laravel/homestead.git
    $ cd homestead
    $ git checkout v7.3.0
    $ bash init.sh
    
    我对homestad.yaml进行了一些简化(您可能更喜欢使用默认值):

    ---
    ip:“192.168.10.10”
    提供者:virtualbox
    文件夹:
    -地图:/home/yuri/\u1/la1
    致:/home/vagrant/code
    地点:
    -地图:宅地
    致:/home/vagrant/code/public
    
    然后:

    我试图在系统范围内信任服务器证书,但没有成功。它出现在Firefox证书管理器的服务器选项卡上,但这并不能使Firefox信任它。我可能已经添加了一个例外,但是信任CA证书看起来是一个更好的选择。信任CA证书使浏览器信任他们颁发的任何证书(在Homestead下运行的新站点)。所以我们将在这里使用CA证书:

    $ vagrant ssh -c 'cat /etc/nginx/ssl/ca.homestead.homestead.crt' > ca.homestead.homestead.crt
    
    $ sudo trust anchor ca.homestead.homestead.crt
    
    $ trust list | head -n 5
    pkcs11:id=%4c%f9%25%11%e5%8d%ad%5c%2a%f3%63%b6%9e%53%c4%70%fa%90%4d%77;type=cert
        type: certificate
        label: Homestead homestead Root CA
        trust: anchor
        category: authority
    
    然后,我将
    192.168.10.10 homestad.test
    添加到
    /etc/hosts
    ,重新启动Chromium,它成功了:

    另外,我正在运行Chromium 65.0.3325.162和Firefox 59.0

    窗户 显然,Windows没有
    trust
    实用程序。在Windows下有:本地计算机和当前用户证书存储。使用本地机器证书存储没有意义,因为我们只让它为当前用户工作。然后,存在子存储。其中最感兴趣的是两个预定义的证书颁发机构:受信任的根证书颁发机构和中间证书颁发机构存储。在命令行中通常称为

    您可以通过以下方式访问Chrome的证书管理器chrome://settings/?search=Manage%20certificates,然后单击管理证书。最感兴趣的是受信任的根证书颁发机构和中间证书颁发机构选项卡

    获取manager证书的一种方法是:

    结果如下(对于本地计算机和当前用户证书存储):

    其他选项包括双击浏览器中的证书、从Chrome的证书管理器导入证书、使用证书MMC管理单元(运行
    certmgr.msc
    )或使用

    对于那些安装了
    grep
    的用户,以下是如何快速检查证书的位置:

    >certutil.exe -store -user root | grep "homestead\|^root\|^CA" ^
    & certutil.exe -store -user CA | grep "homestead\|^root\|^CA" ^
    & certutil.exe -store -enterprise root | grep "homestead\|^root\|^CA" ^
    & certutil.exe -store -enterprise CA | grep "homestead\|^root\|^CA"
    
    因此,将CA证书安装到当前用户>受信任的根证书颁发机构存储中似乎是最好的选择。并且确保不要忘记

    更深入地解释它是如何工作的 在
    Vagrantfile
    中,它需要,然后运行。这是一种方法,它将
    vagrant
    配置为做好所有必要的准备

    在那里,我们可以:

    if settings.include?“站点的
    设置[“站点”]。每个站点|
    #创建SSL证书
    config.vm.provision“shell”do|s|
    s、 name=“创建证书:”+站点[“地图”]
    s、 path=scriptDir+“/create certificate.sh”
    s、 args=[站点[“地图”]]
    结束
    ...
    config.vm.provision“shell”do|s|
    ...
    s、 path=scriptDir+“/service-#{type}.sh”
    ...
    结束
    ...
    结束
    结束
    
    因此,它们分别创建证书和
    nginx
    config

    进一步阅读

    显然,您必须将证书添加到受信任的CA存储中。我让它自动决定,但这不起作用。我还把它添加到了我的个人商店,但也不起作用

    因此,步骤是(如果你在windows上)按你的windows键,输入“Internet选项”,然后打开你的Internet选项。然后单击“内容”选项卡。从这里点击中间的“证书”。

    然后单击导入并单击下一步。浏览到保存证书的位置

    然后单击“放置所有证书”
    $ vagrant ssh -c 'ls -1 /etc/nginx/ssl'
    ca.homestead.homestead.cnf
    ca.homestead.homestead.crt
    ca.homestead.homestead.key
    ca.srl
    homestead.test.cnf
    homestead.test.crt
    homestead.test.csr
    homestead.test.key
    
    $ vagrant ssh -c 'cat /etc/nginx/ssl/ca.homestead.homestead.crt' > ca.homestead.homestead.crt
    
    $ sudo trust anchor ca.homestead.homestead.crt
    
    $ trust list | head -n 5
    pkcs11:id=%4c%f9%25%11%e5%8d%ad%5c%2a%f3%63%b6%9e%53%c4%70%fa%90%4d%77;type=cert
        type: certificate
        label: Homestead homestead Root CA
        trust: anchor
        category: authority
    
    >rem list Current User > Trusted Root Certification Authorities store
    >certutil.exe -store -user root
    
    >rem list Local Machine > Intermediate Certification Authorities store
    >certutil.exe -store -enterprise CA
    
    >rem GUI version of -store command
    >certutil.exe -viewstore -user CA
    
    >rem add certificate to Current User > Trusted Root Certification Authorities store
    >certutil.exe -addstore -user root path\to\file.crt
    
    >rem delete certificate from Current User > Trusted Root Certification Authorities store by serial number
    >certutil.exe -delstore -user root 03259fa1
    
    >rem GUI version of -delstore command
    >certutil.exe -viewdelstore -user CA
    
    root
        homestead.test.crt
            error
        ca.homestead.homestead.crt
            appears in Trusted Root Certification Authorities tab
    CA
        homestead.test.crt
            doesn't work, appears in Other People tab
        ca.homestead.homestead.crt
            doesn't work, appears in Intermediate Certification Authorities tab
    
    >certutil.exe -store -user root | grep "homestead\|^root\|^CA" ^
    & certutil.exe -store -user CA | grep "homestead\|^root\|^CA" ^
    & certutil.exe -store -enterprise root | grep "homestead\|^root\|^CA" ^
    & certutil.exe -store -enterprise CA | grep "homestead\|^root\|^CA"