Wie kann ich ein selbstsigniertes Zertifikat für localhost erstellen?

133

Ich habe die unter Wie verwenden Sie https / SSL auf localhost beschriebenen Schritte ausgeführt ? Dadurch wird jedoch ein selbstsigniertes Zertifikat für meinen Computernamen eingerichtet. Beim Durchsuchen über https: // localhost wird die IE-Warnung angezeigt .

Gibt es eine Möglichkeit, ein selbstsigniertes Zertifikat für "localhost" zu erstellen, um diese Warnung zu vermeiden?

chris
quelle
Haben Sie das Zertifikat als Zertifizierungsstelle installiert?
vcsjones
Ich folgte dem Prozess, um ein selbstsigniertes Zertifikat in IIS unter Win7 zu installieren. Aber das schafft das Zertifikat für "mymachinename" und ich brauche eines für "localhost".
chris
1
Hallo! Ziehen Sie in Betracht, Auris Antwort als Hauptantwort festzulegen, da makecert veraltet ist. Link zur Antwort: stackoverflow.com/a/44164653/1461602
Tormod Haugene

Antworten:

81

Obwohl dieser Beitrag für Windows getaggt ist, handelt es sich um eine relevante Frage unter OS X, für die ich anderswo keine Antworten gesehen habe. Führen Sie die folgenden Schritte aus, um ein selbstsigniertes Zertifikat für localhost unter OS X zu erstellen :

# Use 'localhost' for the 'Common name'
openssl req -x509 -sha256 -nodes -newkey rsa:2048 -days 365 -keyout localhost.key -out localhost.crt

# Add the cert to your keychain
open localhost.crt

In Keychain AccessDoppelklicken Sie auf dieser neuen localhost cert. Erweitern Sie den Pfeil neben "Vertrauen" und wählen Sie "Immer vertrauen". Chrome und Safari sollten diesem Zertifikat jetzt vertrauen. Wenn Sie dieses Zertifikat beispielsweise mit node.js verwenden möchten:

var options = {
    key: fs.readFileSync('/path/to/localhost.key').toString(),
    cert: fs.readFileSync('/path/to/localhost.crt').toString(),
    ciphers: 'ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-RSA-AES128-SHA256:ECDHE-RSA-AES256-SHA:ECDHE-RSA-AES256-SHA384',
    honorCipherOrder: true,
    secureProtocol: 'TLSv1_2_method'
};

var server = require('https').createServer(options, app);
Ben Flynn
quelle
2
Der erste Befehl ssh-keygenist nicht erforderlich, da der Befehl openssl auch einen neuen Schlüssel erstellt (und den von ssh erstellten überschreibt).
Félix Saparelli
7
Sie können den Prozess auch vollständig automatisieren, indem Sie -subj '/CN=localhost'die opensslArgumente ergänzen .
Félix Saparelli
8
Damit OS X ihm über die Befehlszeile vertraut, anstatt sudo security add-trusted-cert -p ssl -d -r trustRoot -k ~/Library/Keychains/login.keychain localhost.crt
herumzuklicken
1
Auch relevant für Linux. Vielen Dank.
Marcel
1
Ich habe all diese Schritte befolgt und bekomme eine ERR_SSL_VERSION_OR_CIPHER_MISMATCHin Chrome 60 und Safari 10.1.2 mag es auch nicht.
Styfle
61

Da diese Frage mit markiert ist IISund ich keine gute Antwort darauf finde, wie ich ein vertrauenswürdiges Zertifikat erhalten kann, gebe ich meine 2 Cent dafür:

Verwenden Sie zuerst den Befehl von @AuriRahimzadeh in PowerShell als Administrator:

New-SelfSignedCertificate -DnsName "localhost" -CertStoreLocation "cert:\LocalMachine\My"

Dies ist gut, aber das Zertifikat ist nicht vertrauenswürdig und führt zu folgendem Fehler. Es ist, weil es nicht installiert ist Trusted Root Certification Authorities.

Geben Sie hier die Bildbeschreibung ein

Lösen Sie dies, indem Sie beginnen mmc.exe.

Dann geh zu:

Datei -> Snap-Ins hinzufügen oder entfernen -> Zertifikate -> Hinzufügen -> Computerkonto -> Lokaler Computer. Klicken Sie auf Fertig stellen.

Erweitern Sie den PersonalOrdner und Sie sehen Ihr localhostZertifikat:

Geben Sie hier die Bildbeschreibung ein

Kopieren Sie das Zertifikat in einen Trusted Root Certification Authorities - CertificatesOrdner.

Der letzte Schritt ist zu öffnen Internet Information Services (IIS) Manageroder einfach inetmgr.exe. Von dort aus gehen Sie zu Ihrer Site, wählen Sie Bindings...und Add...oder Edit.... Legen httpsSie Ihr Zertifikat fest und wählen Sie es aus der Dropdown-Liste aus.

Geben Sie hier die Bildbeschreibung ein

Ihr Zertifikat ist jetzt vertrauenswürdig:

Geben Sie hier die Bildbeschreibung ein

Ogglas
quelle
9
Dies sollte die akzeptierte Antwort sein! Es klappt! Wenn Sie mit dem lokalen Host und dem vertrauenswürdigen Zertifikat herumgespielt haben. Stellen Sie sicher, dass Sie alle alten localhost-Zertifikate entfernen (über die mmc-Konsole und IIS (Top Managed Server)
Tuan Jinn
Vielen Dank! Es gibt so viele SO-Antworten und Blog-Beiträge zu diesem Thema, aber nur sehr wenige sprechen über die Probleme mit der Vertrauenswürdigkeit von Zertifikaten. Tipp: Vielleicht sollten Sie erklären, warum Sie den Standard-SSL-Port 443 nicht verwenden? Ich denke, das liegt daran, dass dieser Port oft von einem anderen Prozess belegt wird.
HoffZ
Wirklich schöne Antwort und funktioniert gut mit IIS als 2020. Vielen Dank!
Alessandrocb
Funktioniert auch für Aliase in der Hosts-Datei
Zef vor
52

Mit PowerShell können Sie ein selbstsigniertes Zertifikat mit dem Cmdlet new-selfsignedcertificate generieren:

New-SelfSignedCertificate -DnsName "localhost" -CertStoreLocation "cert:\LocalMachine\My"

Hinweis: makecert.exe ist veraltet.

Cmdlet-Referenz: https://technet.microsoft.com/itpro/powershell/windows/pkiclient/new-selfsignedcertificate

Auri Rahimzadeh
quelle
Dies sollte die Antwort ab 2017 sein.
Tormod Haugene
1
Für diejenigen, die folgen und nicht wissen, wie sie das resultierende Zertifikat installieren sollen, befolgen Sie die Schritte in diesem Video, es hat für mich funktioniert! youtube.com/watch?v=y4uKPUFmSZ0
Eric Brown - Cal
6
Wo werden die Schlüssel- und CRT-Dateien gespeichert?
woojoo666
1
@ woojoo666 mit -KeyLocationflag kannst du den standort angeben.
Hamid
46

Nachdem ich viel Zeit mit diesem Problem verbracht hatte, stellte ich fest, dass die Ausgabe von und ausgestellt von nicht korrekt war, wenn ich den Vorschlägen zur Verwendung von IIS zur Erstellung eines selbstsignierten Zertifikats folgte. SelfSSL.exe war der Schlüssel zur Lösung dieses Problems. Die folgende Website bot nicht nur einen schrittweisen Ansatz zum Erstellen selbstsignierter Zertifikate, sondern löste auch das Problem "Ausgestellt an" und "Ausgestellt von". Hier ist die beste Lösung, die ich gefunden habe, um selbstsignierte Zertifikate zu erstellen. Wenn Sie dasselbe Tutorial lieber in Videoform sehen möchten, klicken Sie hier .

Eine Beispielanwendung von SelfSSL würde ungefähr so ​​aussehen:

SelfSSL /N:CN=YourWebsite.com / V: 1000 / S: 2

SelfSSL /? wird eine Liste von Parametern mit Erläuterungen bereitstellen.

app.developer.henry
quelle
Der Artikel von RobBagby.com hat perfekt für mich funktioniert. Gut, Henry zu finden.
Cymorg
MEGA! Das Video hat eine schlechte Qualität, aber alles, was benötigt wird.
Tonco
2
Der Link zur Robbagby-Site ist tot. Siehe meine Antwort für 2 hochwertige YouTube-Tutorials von CodeCowboyOrg
Moses Machua
Die Antwort wurde bearbeitet, um auf das Wayback-Archiv des Artikels auf robbagby.com zu verlinken.
Prometheus
23

Wenn Sie versuchen, ein selbstsigniertes Zertifikat zu erstellen, mit dem Sie loslegen können, finden Sie http://localhost/mysite hier eine Möglichkeit, es zu erstellen

makecert -r -n "CN=localhost" -b 01/01/2000 -e 01/01/2099 -eku 1.3.6.1.5.5.7.3.1 -sv localhost.pvk localhost.cer
cert2spc localhost.cer localhost.spc
pvk2pfx -pvk localhost.pvk -spc localhost.spc -pfx localhost.pfx

Von http://social.msdn.microsoft.com/Forums/en-US/wcf/thread/32bc5a61-1f7b-4545-a514-a11652f11200

David Burela
quelle
2
Wo ist mein Zertifikat geblieben
?
2
Das Tool makecert.exe wird übrigens über die Eingabeaufforderung von Visual Studio für zukünftige Leser verwendet. Sie können auch die Resource Kit-Tools der Internetinformationsdienste (IIS) verwenden und SelfSSL 1.0 installieren. microsoft.com/downloads/en/…
atconway
3
Schnelle Antworten sind zwar großartig, helfen aber nicht immer. "Zertifikat kann nicht als SSL-Serverzertifikat verwendet werden" ist ein Fehler, den ich in IIS7 sehe. Op hatte auch Browser-Warnungen erwähnt und nicht "Wie erstelle ich ein Zertifikat"?
cmroanirgo
Sie können den Schritt cert2spc weglassen, da der Parameter pvk2pfx -spc sowohl .spc als auch .cer
abatishchev akzeptiert
1
@ EaterOfCode Mine war in C: \ Windows \ SysWOW64
Bay Sola
10

Ich würde das Tool von Pluralsight zum Erstellen von selbstsignierten Zertifikaten empfehlen: http://blog.pluralsight.com/selfcert-create-a-self-signed-certificate-interactively-gui-or-programmatic-in-net

Erstellen Sie Ihr Zertifikat als PFX und importieren Sie es in IIS. Und fügen Sie es als vertrauenswürdige Stammzertifizierungsstelle hinzu.

cederlof
quelle
1
Nachdem ich alle Arten von PowerShell "Magie" und andere Dinge ausprobiert hatte, die einfach nicht funktionierten, erstellte das Pluralsight-Tool in 30 Sekunden ein funktionierendes Skript für mich, einschließlich der Zeit, die zum Essen der Pizza benötigt wurde (+ Download und extrahiere das Werkzeug, meine ich). Da ich immer noch Windows 7 auf diesem alten Laptop verwende, war dies die perfekte Lösung für mich, danke!
Ade
1

Ja und nein. Selbstsignierte Zertifikate führen zu dieser Warnmeldung, da das Zertifikat nicht von einer vertrauenswürdigen Zertifizierungsstelle signiert wurde. Es gibt einige Optionen, die Sie in Betracht ziehen können, um diese Warnung auf Ihrem lokalen Computer zu entfernen. Weitere Informationen zu dieser Frage finden Sie in den Antworten mit dem höchsten Rang:

Was muss ich tun, damit Internet Explorer 8 ein selbstsigniertes Zertifikat akzeptiert?

Hoffe das hilft!


BEARBEITEN:

Entschuldigung, mir war anfangs nicht bewusst, dass Sie auf localhost beschränkt waren. Sie können versuchen, den Anweisungen unter dem folgenden Link zu folgen: "Generieren Sie ein selbstsigniertes Zertifikat mit dem richtigen allgemeinen Namen."

http://www.sslshopper.com/article-how-to-create-a-self-signed-certificate-in-iis-7.html

Phil Klein
quelle
Nein, die Warnmeldung ist vorhanden, da die URL ( localhost ) nicht mit dem Zertifikatsnamen übereinstimmt, der unter dem Computernamen ausgegeben wird. Wenn ich zu mymachinename wechsle , wird der Fehler nicht angezeigt . Leider muss ich localhost und nicht den Computernamen aus Gründen verwenden, die die Frage nicht betreffen.
Chris
1

Sie könnten versuchen, mkcert.

macos: brauen installieren mkcert

Clark Yu
quelle
0

Wenn Sie Visual Studio verwenden, gibt es eine einfache Möglichkeit , zu installieren und aktivieren SSL mit IIS Express hier erklärt

Amir Chatrbahr
quelle