web-dev-qa-db-ja.com

ローカルで動作するhttps証明書を取得する方法Laravel Homestead site

この問題が発生しています:

enter image description here

Windows 10で見られるエラーChromeバージョン65.0.3325.181(公式ビルド)(64ビット):

接続はプライベートではありません

攻撃者が((mysite))から情報を盗もうとしている可能性があります(パスワード、メッセージ、クレジットカードなど)。詳細NET :: ERR_CERT_AUTHORITY_INVALID

このページは安全ではありません(HTTPSが壊れています)。

証明書-欠落

このサイトには有効な信頼できる証明書がありません(net :: ERR_CERT_AUTHORITY_INVALID)。

Firefox Quantum 59.0.2(64ビット)のコメント:

接続は安全ではありません

((mysite))の所有者が自分のWebサイトを不適切に設定しています。情報の盗難を防ぐため、FirefoxはこのWebサイトに接続していません。

接続は安全ではありません

発行者が不明なため、この証明書を検証できませんでした。

私はすでに試しました: https://stackoverflow.com/a/47755133/470749

vboxmanage --version
5.2.6r120293

vagrant -v
Vagrant 2.0.2

git branch
* (HEAD detached at v7.3.0)

vagrant box list
laravel/Homestead (virtualbox, 5.2.0)

vagrant box update
==> vboxHomestead: Checking for updates to 'laravel/Homestead'
    vboxHomestead: Latest installed version: 5.2.0
    vboxHomestead: Version constraints: >= 5.2.0
    vboxHomestead: Provider: virtualbox
==> vboxHomestead: Box 'laravel/Homestead' (v5.2.0) is running the latest version.

これは、まだ release 7.1. (changelogに「カスタムルート証明書を使用してSSL証明書に署名する」)を使用していないことを意味するのでしょうか? SSL HTTPSの問題。

証明書を機能させるために今すぐ試すべき次のステップは何ですか?

12
Ryan

残念ながら、Windowsで簡単に確認する方法がないため、ここではLinuxで実行されているVirtualBoxを使用します。 vagrantをインストールしてから:

$ vagrant box add laravel/Homestead
$ git clone https://github.com/laravel/Homestead.git
$ cd Homestead
$ git checkout v7.3.0
$ bash init.sh

Homestead.yamlを少し簡略化しました(デフォルトのままにすることをお勧めします)。

---
ip: "192.168.10.10"
provider: virtualbox
folders:
    - map: /home/yuri/_/la1
      to: /home/vagrant/code
sites:
    - map: Homestead.test
      to: /home/vagrant/code/public

次に:

$ mkdir -p ~/_/la1/public
$ echo '<?php echo "it works";' > ~/_/la1/public/index.php

$ vagrant up

$ vagrant ssh -c 'ls /etc/nginx/sites-enabled'
Homestead.test

$ vagrant ssh -c 'cat /etc/nginx/sites-enabled/Homestead.test'
server {
    listen 80;
    listen 443 ssl http2;
    server_name .Homestead.test;
    root "/home/vagrant/code/public";
    ...
    ssl_certificate     /etc/nginx/ssl/Homestead.test.crt;
    ssl_certificate_key /etc/nginx/ssl/Homestead.test.key;
}

ご覧のとおり、/etc/nginx/sslに証明書があります:

$ 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

システム全体でサーバー証明書を信頼しようとしましたが、うまくいきませんでした。 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 Homestead.test/etc/hostsに追加し、Chromiumを再起動しました。

追伸Chromium 65.0.3325.162とFirefox 59.0を実行しています。

どうやら、Windowsにはtrustユーティリティがありません。 Windowsでは、 2つのストア :ローカルマシンと現在のユーザー証明書ストアがあります。 Local Machine Certificate Storeを使用する意味はありません。現在のユーザーだけのために機能しているからです。次に、サブストアがあります。信頼できるルート認証局と中間認証局ストアの2つの事前定義済みサービスが最も重要です。一般的にコマンドラインでは root and CA と呼ばれます。

Chromeの証明書マネージャーにアクセスするには、chrome:// settings /?search = Manage%20certificatesをフォローし、[証明書の管理]をクリックします。最も興味深いのは、信頼されたルート証明機関および中間証明機関タブです。

証明書を管理する1つの方法は、 コマンドライン を使用することです。

>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

その他のオプションは、エクスプローラーで証明書をダブルクリックする、Chromeの証明書マネージャーから証明書をインポートする、証明書MMCスナップイン(certmgr.mscを実行)]、または CertMgr.exe

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では、 scripts/Homestead.rb が必要です。次に、 Homestead.configure を実行します。これがメソッドであり、vagrantを設定して必要な準備をすべて行います。

そこで see

if settings.include? 'sites'
    settings["sites"].each do |site|

        # Create SSL certificate
        config.vm.provision "Shell" do |s|
            s.name = "Creating Certificate: " + site["map"]
            s.path = scriptDir + "/create-certificate.sh"
            s.args = [site["map"]]
        end

        ...

        config.vm.provision "Shell" do |s|
            ...
            s.path = scriptDir + "/serve-#{type}.sh"
            ...
        end

        ...
    end
end

したがって、これらの twofiles はそれぞれ証明書とnginx configを作成します。

参考文献

ブラウザにローカルホストSSL証明書を信頼させる方法

14
x-yuri

問題は、発行者が不明であることです。エラーで述べたように、 「このサイトには有効な信頼できる証明書がありません」または「このサイトには有効な信頼できる証明書がありません(net :: ERR_CERT_AUTHORITY_INVALID)」

最初にこのエラーが発生する理由を理解しましょう。ブラウザには、信頼できる認証局のリストがあります。このリストは、さまざまなブラウザーの設定/設定セクションから確認できます。これらの機関のいずれかによって証明書が発行されていない場合、上記のエラーが発生します。

LOCALHOSTで修正する2つの解決策が考えられます。

  1. 証明書をブラウザに手動で追加すると、httpsで開き始めます。

OR

  1. すでに信頼された機関で証明書に署名します。ローカルサーバーに証明書をインストールします。/etc/hostsファイルで、証明書に署名したドメインと同じ名前でホストを構成します。

問題が解決することを願っています。

0
Umair Anwar

信頼できるCAストアに証明書を追加する必要があるようです。私はそれを自動決定させましたが、それはうまくいきませんでした。また、個人用ストアに追加しましたが、機能しませんでした。

(Windowsを使用している場合)手順は、Windowsキーを押して「インターネットオプション」と入力し、インターネットオプションを適切に開くことです。次に、「コンテンツ」タブをクリックします。ここから、中央のボタンである「証明書」をクリックします。 enter image description here

次に、[インポートして次へ]をクリックします。証明書を保存した場所を参照します。

次に、[すべての証明書を次のストアに配置する]をクリックし、[参照]をクリックして、[信頼されたルート証明機関]を選択します。

enter image description here

そして、あなたとすべてのジャズを確認して警告するように求めるポップアップが表示されるはずです。

そして、ブラウザを再起動してください。 On chromeこれをURLバーに入力できます:chrome://restart。ブームこれがお役に立てば幸いです!

0
Radmation