Beim Versuch, verschiedene Anweisungen zum Erstellen eines selbstsignierten Zertifikats für die Verwendung mit localhost zu befolgen, scheinen die meisten Anweisungen für IIS zu gelten, aber ich versuche, Nodejs / Express zu verwenden. Keiner von ihnen funktioniert ordnungsgemäß, da das Zertifikat zwar installiert wird, aber nicht vertrauenswürdig ist. Folgendes habe ich versucht, was fehlschlägt:
- Wie kann ich ein selbstsigniertes Zertifikat für localhost erstellen?
- https://www.digitalocean.com/community/articles/how-to-create-a-ssl-certificate-on-nginx-for-ubuntu-12-04/
- http://blogs.developerforce.com/developer-relations/2011/05/generating-valid-self-signed-certificates.html
- http://www.robbagby.com/iis/self-signed-certificates-on-iis-7-the-easy-way-and-the-most-effective-way/
Kann jemand einen Workflow anbieten, der dies kann? Ich kann ein Zertifikat installieren lassen, aber ich kann nicht sicherstellen, dass das Zertifikat in Chrome (v32) oder IE (v10) vertrauenswürdig ist.
BEARBEITEN: In Kommentaren wurde vorgeschlagen, dass das Problem kein vertrauenswürdiger Zertifikatsstamm ist. Ich habe das Zertifikat über den IE installiert, aber es wird immer noch nicht als vertrauenswürdig eingestuft.
Antworten:
Die obigen Antworten waren teilweise. Ich habe so viel Zeit damit verbracht, das zum Laufen zu bringen, es ist verrückt. Hinweis für mein zukünftiges Ich: Folgendes müssen Sie tun:
Ich arbeite unter Windows 10 mit Chrome 65. Firefox verhält sich gut - bestätigen Sie einfach localhost als Sicherheitsausnahme und es wird funktionieren. Chrome nicht:
Schritt 1. Erstellen Sie in Ihrem Backend einen Ordner mit dem Namen
security
. Wir werden darin arbeiten.Schritt 2. Erstellen Sie eine Anforderungskonfigurationsdatei
req.cnf
mit dem folgenden Inhalt (Gutschrift geht an: @Anshul )req.cnf:
Eine Erklärung dieser Felder finden Sie hier .
Schritt 3. Navigieren Sie zum Sicherheitsordner im Terminal und geben Sie den folgenden Befehl ein:
openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout cert.key -out cert.pem -config req.cnf -sha256
Schritt 4.
security
Führen Sie dann außerhalb des Ordners in Ihrer Express-App Folgendes aus: (Gutschrift geht an @Diego Mello)server.js:
Schritt 5. Starten Sie den Server
node server.js
und gehen Sie zu https: // localhost: 3000 .Zu diesem Zeitpunkt haben wir das Server-Setup. Der Browser sollte jedoch eine Warnmeldung anzeigen.
Wir müssen unser selbstsigniertes Zertifikat als vertrauenswürdige Zertifizierungsstelle für Zertifizierungsstellen im Chrome / Windows-Zertifikatspeicher registrieren. (Chrome speichert dies auch in Windows)
Schritt 6. Öffnen Sie Dev Tools in Chrome, gehen Sie zum Sicherheitsbereich und klicken Sie auf Zertifikat anzeigen.
Schritt 7. Gehen Sie zum Detailfenster, klicken Sie auf Datei kopieren und klicken Sie dann, wenn der Zertifikatsexport-Assistent angezeigt wird, wie folgt auf Weiter:
Schritt 8. Verlassen Sie die DER-Codierung, klicken
Browse
Sie auf Weiter, wählen Sie , legen Sie sie in einem leicht zugänglichen Ordner wie Desktop ab und benennen Sie das Zertifikatlocalhost.cer, then click Save and then Finish.
. Sie sollten Ihr Zertifikat auf dem Desktop sehen können.Schritt 9. Öffnen Sie,
chrome://settings/
indem Sie es in das URL-Feld einfügen. Klicken Sie unten aufAdvanced / Advanced Options
und scrollen Sie nach unten, um zu suchenManage Certificates
.Schritt 10. Wechseln Sie zum Bereich Vertrauenswürdige Stammzertifizierungsstellen, und klicken Sie auf Importieren.
Wir werden das
localhost.cer
Zertifikat importieren, das wir gerade in Schritt 8 exportiert haben.Schritt 11. Klicken Sie auf Durchsuchen, suchen Sie die
localhost.cer
, lassen Sie die Standardwerte einige Male auf Weiter klicken - bis diese Warnung angezeigt wird, klicken Sie auf Ja.Schritt 12. Schließen Sie alles und starten Sie Chrome neu. Wenn
https://localhost:3000
Sie dann zu gehen, sollten Sie sehen:quelle
https://localhost:3000
bleibt Chrome beim Laden hängen. Jeder kann sagen, was der Grund sein könnte?crl+shift+i
oderF12
, um die Konsole zu öffnen.DNS.1 = server.local
: Aktualisieren Sie dann auf dem Verbindungscomputer die HOSTS-Datei, um die Server-IP-Adresse auf den Hostnamen zu verweisen, zum Beispiel:192.168.0.50 server.local
Dies wird Lassen Sie das Zertifikat und die Adresse übereinstimmen und validieren Sie das Zertifikat.Kürzester Weg. Getestet unter MacOS, funktioniert aber möglicherweise auch unter anderen Betriebssystemen.
Pem generieren
Ihr Express-Server
https://localhost:3000
in Google Chrome und Sie werden feststellen, dass es nicht sicher ist. Noch!quelle
Drag image to your desktop and double click it
-> Ich kann nichts auf meinen Desktop ziehen, ist nicht ziehbar. Wasimage
redest du genau über Erz?openssl req -newkey rsa:2048 -x509 -nodes -keyout keytmp.pem -new -out cert.pem -subj /CN=localhost -reqexts SAN -extensions SAN -config <(cat /System/Library/OpenSSL/openssl.cnf <(printf '[SAN]\nsubjectAltName=DNS:localhost')) -sha256 -days 3650
anstelle der von Ihnen vorgeschlagenen ersten Zeile etwas tun . Und auch dieser wird dabei weniger Fragen stellen ...Sie können openSSL ausprobieren, um Zertifikate zu generieren. Schauen Sie sich auf diese .
Sie benötigen eine .key- und eine .crt-Datei, um HTTPS zum Knoten-JS-Express-Server hinzuzufügen. Wenn Sie dies generiert haben, verwenden Sie diesen Code, um HTTPS zum Server hinzuzufügen.
Dies funktioniert sowohl auf meinem lokalen Computer als auch auf dem Server, auf dem ich dies bereitgestellt habe, einwandfrei. Der, den ich auf dem Server habe, wurde von goDaddy gekauft, aber localhost hatte ein selbstsigniertes Zertifikat.
Jeder Browser hat jedoch einen Fehler ausgegeben, der besagt, dass die Verbindung nicht vertrauenswürdig ist. Möchten Sie fortfahren? Nachdem ich auf Weiter geklickt habe, hat es gut funktioniert.
Wenn jemand diesen Fehler jemals mit einem selbstsignierten Zertifikat umgangen hat, klären Sie dies bitte auf.
quelle
openssl genrsa -out key.pem 2048
für einen besseren Schlüssel zu verwenden.So generieren Sie ein SSL-Zertifikat für localhost: link
Hier müssen Sie ein Passwort eingeben , das Sie in den folgenden Schritten erneut eingeben müssen
Wenn Sie nach "Common Name" gefragt werden, geben Sie Folgendes ein : localhost
quelle
cp server.crt /usr/local/share/ca-certificates/.
und ausführensudo update-ca-certificates
Dann laufen localhost https Anfragen unter NodeJS 8+. Id auch erhöhen1024 to 2048
Hier ist, was für mich funktioniert
auf Windows
1) Fügen Sie dies zu Ihrer% WINDIR% \ System32 \ drivers \ etc \ hosts-Datei hinzu: 127.0.0.1 localdev.YOURSITE.net (weil der Browser Probleme mit 'localhost' hat (für Cross-Origin-Scripting)
Windows Vista und Windows 7 Vista und Windows 7 verwenden die Benutzerkontensteuerung (User Account Control, UAC), sodass Notepad als Administrator ausgeführt werden muss.
Klicken Sie auf Start -> Alle Programme -> Zubehör
Klicken Sie mit der rechten Maustaste auf Editor und wählen Sie Als Administrator ausführen
Klicken Sie im UAC-Fenster "Windows benötigt Ihre Berechtigung" auf "Weiter".
Wenn der Editor geöffnet wird Klicken Sie auf Datei -> Öffnen
Geben Sie im Feld Dateiname C: \ Windows \ System32 \ Drivers \ etc \ hosts ein
Klicken Sie auf Öffnen
Fügen Sie dies Ihrer% WINDIR% \ System32 \ drivers \ etc \ hosts-Datei hinzu: 127.0.0.1 localdev.YOURSITE.net
sparen
Schließen Sie die Browser und starten Sie sie neu
Auf Mac oder Linux:
su
Erlaubnis127.0.0.1 localdev.YOURSITE.net
Bei der Entwicklung verwenden Sie localdev.YOURSITE.net anstelle von localhost. Wenn Sie also in Ihrem ide Run / Debug-Konfigurationen verwenden, müssen Sie diese unbedingt aktualisieren.
Verwenden Sie ".YOURSITE.net" als Cookiedomain (mit einem Punkt am Anfang), wenn Sie das Cookiem erstellen. Dann sollte es mit allen Subdomains funktionieren.
2) Erstellen Sie das Zertifikat mit dieser localdev.url
TIPP: Wenn Sie Probleme beim Generieren von Zertifikaten unter Windows haben, verwenden Sie stattdessen eine VirtualBox- oder VMware-Maschine.
3) Importieren Sie das Zertifikat wie unter http://www.charlesproxy.com/documentation/using-charles/ssl-certificates/ beschrieben.
quelle
Mkcert von @FiloSottile vereinfacht diesen Vorgang unendlich:
mkcert -install
um eine lokale Zertifizierungsstelle zu erstellenmkcert localhost 127.0.0.1 ::1
um ein vertrauenswürdiges Zertifikat für localhost im aktuellen Verzeichnis zu erstellenexport NODE_EXTRA_CA_CERTS="$(mkcert -CAROOT)/rootCA.pem"
Grundlegende Knoteneinrichtung:
quelle
Wenn Sie unter OSX / Chrome arbeiten, können Sie das selbstsignierte SSL-Zertifikat wie hier beschrieben zu Ihrem Systemschlüsselbund hinzufügen: http://www.robpeck.com/2010/10/google-chrome-mac-os-x-and -selbst signierte-ssl-Zertifikate
Es ist ein manueller Prozess, aber ich habe ihn endlich zum Laufen gebracht. Stellen Sie einfach sicher, dass der Common Name (CN) auf "localhost" (ohne Port) eingestellt ist, und stellen Sie nach dem Hinzufügen des Zertifikats sicher, dass alle Vertrauensoptionen des Zertifikats auf "Always Trust" eingestellt sind. Stellen Sie außerdem sicher, dass Sie es dem Schlüsselbund "System" und nicht dem Schlüsselbund "Login" hinzufügen.
quelle
Wenn Sie Node verwenden, können Sie diese mit Node generieren. Dieses Modul scheint ziemlich voll ausgestattet zu sein:
Beachten Sie, dass ich nicht im laufenden Betrieb generieren würde. Generieren Sie mit einer Art Build-Skript, damit Sie ein konsistentes Zertifikat und einen konsistenten Schlüssel haben. Andernfalls müssen Sie das neu generierte selbstsignierte Zertifikat jedes Mal autorisieren.
quelle
Einige der Antworten enthalten Beiträge, die für mich sehr nützlich waren, um auch dieses Problem zu lösen. Ich war jedoch auch an der Mindestanzahl von Schritten und im Idealfall an der Vermeidung von OpenSSL (unter Windows 10) interessiert .
Ein wichtiger Punkt bei den Antworten (Kredit: @ TroyWorks ) ist, dass Sie Ihre HOSTS-Datei bearbeiten müssen, um einen fiktiven Server zu erstellen, und diese 127.0.0.1 zuordnen müssen. Dies setzt voraus, dass Sie die lokale Entwicklung durchführen.
In meinem Fall habe ich das SS-Zertifikat verwendet, um einen Websocket in NodeJS zu sichern, und dieser Socket wurde programmgesteuert verbunden (im Gegensatz zum Browser). Daher war es für mich wichtig, dass das Zertifikat ohne Warnungen oder Fehler akzeptiert wurde, und das entscheidende Element war, dass das Zertifikat mit einem geeigneten CN erstellt wurde (und das Zertifikat natürlich bei vertrauenswürdigen Behörden zu akzeptieren, wie an anderer Stelle in den Antworten beschrieben). . Wenn Sie IIS zum Erstellen eines selbstsignierten Zertifikats verwenden, wird nicht der richtige CN erstellt. Daher habe ich den folgenden einfachen Befehl mit Powershell entdeckt:
Dies muss in der PS Admin-Konsole ausgeführt werden, funktioniert jedoch einfach und fügt das Zertifikat in den Abschnitt "Persönlich" des LocalMachine-Zertifikatspeichers ein. Sie können überprüfen, ob es erstellt wurde, indem Sie Folgendes ausführen:
Um ihm zu vertrauen, kopieren Sie ihn einfach und fügen Sie ihn mit Certificate Manager in "Trusted Root Certification Authorities" ein (stellen Sie sicher, dass Sie sich die Zertifikate des lokalen Computers ansehen, nicht den aktuellen Benutzer!).
Wenn Sie sich in IIS an dieses Zertifikat binden, sollten Sie in der Lage sein, auf https://gandalf.dummy.dev/ zu klicken und eine sichere Verbindung ohne Warnungen herzustellen.
Das letzte Stück, das dies in NodeJS verwendet, ist oben und in anderen SO-Antworten beschrieben. Daher möchte ich nur hinzufügen, dass es unter Windows einfacher ist, mit einer pfx-Datei zu arbeiten, die das Zertifikat und den privaten Schlüssel kombiniert. Sie können einen Pfx problemlos aus dem Zertifikat-Manager exportieren, dies hat jedoch Auswirkungen auf die Verwendung in NodeJS. Wenn Sie einen Server mithilfe des Moduls 'https' instanziieren, verwenden Sie (anstelle von 'key' und 'cert') die Optionen 'pfx' und 'passphrase', wie in:
quelle
Unter Windows habe ich das iis-Entwicklungszertifikat mithilfe von MMC (start> run> mmc) als vertrauenswürdig eingestuft, dann das Zertifikat-Snapin hinzugefügt, "lokaler Computer" ausgewählt und die Standardeinstellungen übernommen. Wenn dieser Zertifikat-Snapip hinzugefügt wurde, erweitern Sie die Zertifikatstruktur des lokalen Computers, um unter Persönlich zu suchen. Wählen Sie das lokale Host-Zertifikat aus und klicken Sie mit der rechten Maustaste auf> Alle Aufgaben> Exportieren. Übernehmen Sie alle Standardeinstellungen im Exportassistenten.
Erweitern Sie nach dem Speichern dieser Datei vertrauenswürdige Zertifikate und beginnen Sie mit dem Import des gerade exportierten Zertifikats.
https://localhost
wird jetzt in Chrom ohne Sicherheitswarnungen vertraut.Ich habe diese Leitfadenauflösung Nr. 2 aus dem MSDN-Blog verwendet. Der Op hat auch einen Link in seiner Frage dazu geteilt, dass auch MMC verwendet werden sollte, aber das hat bei mir funktioniert. Auflösung # 2
quelle
Gehe zu:
chrome://flags/
Aktivieren: Zulassen ungültiger Zertifikate für Ressourcen, die von localhost geladen wurden.
Sie haben nicht die grüne Sicherheit, aber Sie dürfen immer https: // localhost in Chrome verwenden.
quelle
Das hat noch mehr Aspekte.
Sie können TLS (manche sagen immer SSL) mit einem Zertifikat erreichen, das selbst signiert ist oder nicht.
Um einen grünen Balken für ein selbstsigniertes Zertifikat zu erhalten, müssen Sie auch die Zertifizierungsstelle (CA) werden. Dieser Aspekt fehlt in den meisten Ressourcen, die ich auf meiner Reise gefunden habe, um den grünen Balken in meinem lokalen Entwicklungssetup zu erreichen. Eine Zertifizierungsstelle zu werden ist so einfach wie ein Zertifikat zu erstellen.
Diese Ressource umfasst die Erstellung sowohl des CA-Zertifikats als auch eines Serverzertifikats. Mein Setup führte dazu, dass auf localhost Chrome, Firefox und Edge ein grüner Balken angezeigt wurde: https://ram.k0a1a.net/self-signed_https_cert_after_chrome_58
Bitte beachten Sie: In Chrome müssen Sie das CA-Zertifikat Ihren vertrauenswürdigen Behörden hinzufügen.
quelle
Wenn Sie einen Schritt weiter gehen müssen als die detaillierten Schritte von @ alon, und auch eine selbstsignierte ca erstellen müssen:
package.json
Verwenden Sie die Datei localhost.cnf wie beschrieben:
quelle