wake-up-neo.com

So erhalten Sie ein https-Zertifikat für die lokale Website von Laravel Homestead

Ich bekomme dieses Problem:

 enter image description here

Der Fehler, den ich in Windows 10 Chrome Version 65.0.3325.181 (Official Build) (64-Bit) sehe, ist:

Ihre Verbindung ist nicht privat 

Angreifer versuchen möglicherweise, Ihre Zu stehlen. Informationen von ((mysite)) (z. B. Kennwörter, Nachrichten oder Kreditkarten). Weitere Informationen NET :: ERR_CERT_AUTHORITY_INVALID

Diese Seite ist nicht sicher (defektes HTTPS). 

Zertifikat - fehlt 

Diese Auf der Site fehlt ein gültiges, vertrauenswürdiges Zertifikat (net :: ERR_CERT_AUTHORITY_INVALID).

Firefox Quantum 59.0.2 (64-Bit) sagt:

Ihre Verbindung ist nicht sicher

Der Eigentümer von ((mysite)) hat seine Website .__ konfiguriert. unsachgemäß. Um Ihre Daten vor Diebstahl zu schützen, hat Firefox nicht mit dieser Website verbunden.

Verbindung ist nicht sicher 

Dieses Zertifikat konnte nicht überprüft werden, da Aussteller ist unbekannt.

Ich habe bereits versucht: 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.

Ich frage mich, ob dies bedeutet, dass ich noch nicht release 7.1.0 verwende (was in seinem Änderungsprotokoll "SSL-Zertifikate mit einem benutzerdefinierten Stammzertifikat signieren" hat), und ich frage mich, ob ich dieses SSL-HTTPS-Problem habe .

Was sind die nächsten Schritte, die ich jetzt versuchen sollte, damit das Zertifikat funktioniert? 

8
Ryan

Leider habe ich keine einfache Möglichkeit, dies unter Windows zu überprüfen. Daher werde ich hier VirtualBox unter Linux verwenden. Installieren Sie vagrant und dann:

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

Ich habe Homestead.yaml etwas vereinfacht (Sie möchten vielleicht lieber bei den Standardeinstellungen bleiben):

---
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

Dann:

$ 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;
}

Wie wir sehen können, hat es die Zertifikate in /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

Ich habe versucht, dem Serverzertifikat systemweit zu vertrauen, aber es hat nicht funktioniert. Es wurde im Firefox-Zertifikats-Manager auf der Registerkarte "Server" angezeigt, was jedoch dazu führte, dass Firefox dem nicht vertraute. Ich hätte wahrscheinlich eine Ausnahme hinzufügen können, aber das Vertrauen auf CA-Zertifikate scheint eine bessere Option zu sein. Durch das Vertrauen auf ein Zertifizierungsstellenzertifikat vertraut der Browser jedem von ihm ausgestellten Zertifikat (neue Websites, die unter Homestead ausgeführt werden). Also gehen wir hier mit dem CA-Zertifikat:

$ 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

Dann habe ich 192.168.10.10 Homestead.test zu /etc/hosts hinzugefügt, Chromium neu gestartet und es hat funktioniert:

P.S. Ich verwende Chromium 65.0.3325.162 und Firefox 59.0.

Windows

Anscheinend verfügt Windows nicht über das Dienstprogramm trust. Unter Windows hat man zwei Speicher : Lokale Computer und aktuelle Benutzerzertifikate. Es macht keinen Sinn, den Local Machine Certificate Store zu verwenden, da wir es nur für unseren aktuellen Benutzer funktionieren lassen. Dann gibt es Substores. Zwei vordefinierte davon sind am interessantesten: Vertrauenswürdige Stammzertifizierungsstellen und Zwischenzertifizierungsstellen. In der Befehlszeile allgemein als Root und CA bezeichnet.

Sie können auf den Zertifikatsmanager von Chrome zugreifen, indem Sie Folgendes unter chrome ausführen: // settings /? Search = Manage% 20certificates und dann auf Zertifikate verwalten klicken. Am meisten interessant sind die Registerkarten Vertrauenswürdige Stammzertifizierungsstellen und Zwischenzertifizierungsstellen.

Eine Möglichkeit, Zertifikate zu verwalten, ist über Befehlszeile :

>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

Die Ergebnisse lauten wie folgt (sowohl für den lokalen Computer als auch für das Zertifikat des aktuellen Benutzerzertifikats):

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

Andere Optionen wären das Doppelklicken auf ein Zertifikat im Explorer, das Importieren von Zertifikaten aus dem Chrome-Zertifikatmanager, das Verwenden des Snap-Ins MMC (Ausführen von certmgr.msc) oder das Verwenden von CertMgr.exe .

Für diejenigen, die grep installiert haben, können Sie schnell überprüfen, wo sich das Zertifikat befindet:

>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"

Das Installieren des CA-Zertifikats im Speicher Aktueller Benutzer> Vertrauenswürdige Stammzertifizierungsstellen scheint daher die beste Option zu sein. Und vergewissere dich, dass nicht vergessen wird, starte deinen Browser neu .

ausführlichere Erklärung, wie es funktioniert

In Vagrantfile benötigt es scripts/Homestead.rb und führt dann Homestead.configure aus. Das ist die Methode, mit der vagrant alle notwendigen Vorbereitungen trifft.

Da können wir siehe :

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

Also erstellen diese zweiDateien Zertifikate und nginx config.

weiter lesen

So machen Sie das Vertrauen des Browsers zum lokalen SSL-Zertifikat?

10
x-yuri

Ihr Problem ist, dass der Aussteller unbekannt ist. Wie Sie in den Fehlern erwähnt haben; "Dieser Site fehlt ein gültiges vertrauenswürdiges Zertifikat" Oder "Diese Site fehlt ein gültiges vertrauenswürdiges Zertifikat (net :: ERR_CERT_AUTHORITY_INVALID)"

Lasst uns zuerst verstehen, warum dieser Fehler auftritt. Die Browser verfügen über eine Liste vertrauenswürdiger Zertifizierungsstellen. Sie können diese Liste im Abschnitt "Einstellungen/Einstellungen" verschiedener Browser anzeigen. Wenn Ihr Zertifikat nicht von einer dieser Behörden ausgestellt wird, wird der obige Fehler angezeigt.

BEHANDLUNG BEI LOKALHOST. Ich kann mir zwei mögliche Lösungen vorstellen. 

  1. Fügen Sie das Zertifikat manuell zum Browser hinzu, und es wird mit https geöffnet. 

OR

  1. Signieren Sie das Zertifikat bei einer bereits vertrauenswürdigen Stelle. Installieren Sie die Zertifikate auf dem lokalen Server. Konfigurieren Sie Host in der Datei/etc/hosts mit demselben Namen Ihrer Domäne, mit der Sie das Zertifikat signiert haben. 

Ich hoffe, es wird das Problem beheben. 

0
Umair Anwar

Anscheinend müssen Sie Ihr Zertifikat zum Speicher der vertrauenswürdigen Zertifizierungsstelle hinzufügen. Ich lass es automatisch entscheiden und das hat nicht funktioniert. Ich habe es auch zu meinem persönlichen Laden hinzugefügt, der auch nicht funktioniert hat. 

Die Schritte sind also (wenn Sie unter Windows sind), Ihre Windows-Taste zu drücken und "Internetoptionen" einzugeben und Ihre Internetoptionen zu öffnen. Klicken Sie dann auf die Registerkarte "Inhalt". Klicken Sie hier auf "Zertifikate", die mittlere Schaltfläche.  enter image description here

Klicken Sie dann auf Importieren und Weiter. Navigieren Sie zu dem Speicherort, an dem Sie das Zertifikat gespeichert haben. 

Klicken Sie dann auf "Alle Zertifikate in folgendem Speicher ablegen" und klicken Sie auf Durchsuchen, und wählen Sie "Vertrauenswürdige Stammzertifizierungsstellen" aus.

 enter image description here

Sie sollten ein Popup erhalten, in dem Sie aufgefordert werden, Sie und den gesamten Jazz zu bestätigen.

Stellen Sie dann sicher, dass Sie Ihren Browser neu starten. Auf Chrome können Sie dies in die URL-Leiste eingeben: chrome://restart. Boom Ich habe gehofft, dass dir das geholfen hat!

0
Radmation