Ich habe das subdomain.example.com
, das ich für Entwicklungszwecke benutze. Meine Webanwendungslösung enthält eine Web-API usw., die ich von externen Systemen aus aufrufen muss, daher verwende ich localhost nicht.
Ich muss jetzt auf SSL testen und benötige ein Zertifikat für meinen subdomain.example.com
Entwicklungsdomänennamen.
Ich habe versucht, ein selbstsigniertes Zertifikat zu erstellen, wie in http://technet.microsoft.com/en-us/library/cc753127(v=ws.10).aspx beschrieben , aber dieses Zertifikat funktioniert nur für localhost. Kann dieses Zertifikat für meinen Zweck verwendet werden oder muss ich ein selbstsigniertes Zertifikat für meine Entwicklungs-Subdomain erstellen? Welches Dienstprogramm oder welchen Onlinedienst (kostenlos) kann ich dafür verwenden, wenn ich eine selbstsignierte Zertifizierung für meine Entwicklungs-Subdomain erstellen muss?
quelle
makecert.exe
, um in meinem Pfad zu sein. Für die Zertifikate dachte ich, ich wäre sicherer und benutzerfreundlicher-a SHA512 -len 8192
- die Generierung hat ewig gedauert. Und wie ich vermutet hatte, hatte dies keine Auswirkungen auf die von IIS verwendete Verschlüsselungsstufe. Standardmäßig verwendet IIS 128-Bit. Um dies zu ändern , müssen Sie Gruppenrichtlinien ausführen . Ein weiterer Hinweis für andere Leser: Ändern Sie die magischen Zahlen danach nicht mehr-eku
, sie sind erforderlich.sha1
. Ersetzen-a sha512
und erwägen Sie,-len 2048
zum zweitenmakecert
Aufruf hinzuzufügen , und alles sollte in Ordnung sein.Verwenden von PowerShell
Ab Windows 8.1 und Windows Server 2012 R2 (Windows PowerShell 4.0) können Sie mit dem neuen
New-SelfSignedCertificate
Cmdlet ein selbstsigniertes Zertifikat erstellen:Beispiele:
Verwenden des IIS-Managers
www.domain.com
odersubdomain.domain.com
quelle
New-SelfSignedCertificate -FriendlyName *.mydomain.local -DnsName *.mydomain.local, localhost -CertStoreLocation Cert:\LocalMachine\My
Dadurch wird ein Zertifikat im Personal Store erstellt. Dann exportierte ich das Zertifikat zuerst in eine Datei und importierte es dann erneut über IIS Manager in IIS (um es für meine https-Bindung zu verwenden) und dann über MMC in vertrauenswürdige Stammzertifizierungsstellen (um Browserwarnungen zu vermeiden).-NotAfter
Option ist auch praktisch, um ein Ablaufdatum anzugeben (ohne dieses ist die Standardeinstellung nur 1 Jahr). Beispiel, das ich verwendet habeNew-SelfSignedCertificate -DnsName *.mydomain.com -FriendlyName *.mydomain.com -NotAfter (Get-Date).AddYears(15) -CertStoreLocation cert:\LocalMachine\My
So erstellen Sie das neue Zertifikat für Ihre spezifische Domain:
Öffnen Sie Powershell ISE als Administrator und führen Sie den folgenden Befehl aus:
So vertrauen Sie dem neuen Zertifikat:
So binden Sie das Zertifikat an Ihre Site:
quelle
Ich musste mich durch selbstsignierte Zertifikate unter Windows rätseln, indem ich Teile der gegebenen Antworten und weitere Ressourcen kombinierte. Hier ist mein eigener (und hoffentlich vollständiger) Durchgang. Ich hoffe, es erspart Ihnen einige meiner schmerzhaften Lernkurven. Es enthält auch Infos zu verwandten Themen, die früher oder später angezeigt werden, wenn Sie Ihre eigenen Zertifikate erstellen.
Erstellen Sie ein selbstsigniertes Zertifikat unter Windows 10 und niedriger
Verwenden Sie nicht makecert.exe. Es wurde von Microsoft veraltet.
Der moderne Weg verwendet einen Powershell-Befehl.
Windows 10:
Öffnen Sie Powershell mit Administratorrechten:
Windows 8, Windows Server 2012 R2:
In Powershell auf diesen Systemen sind die Parameter -FriendlyName und -NotAfter nicht vorhanden. Entfernen Sie sie einfach aus der obigen Befehlszeile.
Öffnen Sie Powershell mit Administratorrechten:
Eine Alternative ist die Verwendung der folgenden Methode für ältere Windows-Versionen, mit der Sie alle Funktionen von Win 10 für die Zertifikaterstellung verwenden können ...
Ältere Windows-Versionen:
Meine Empfehlung für ältere Windows-Versionen lautet, das Zertifikat auf einem Win 10-Computer zu erstellen, es mit einer mmc-Instanz in eine .PFX-Datei zu exportieren (siehe "Vertrauen Sie dem Zertifikat" weiter unten) und es mit dem in den Zertifikatspeicher auf dem Zielcomputer zu importieren altes Windows-Betriebssystem. Um das Zertifikat zu importieren, klicken Sie NICHT mit der rechten Maustaste darauf. Obwohl das Kontextmenü das Element "Zertifikat importieren" enthält, konnten alle meine Versuche unter Win Server 2008 nicht verwendet werden. Öffnen Sie stattdessen eine andere mmc-Instanz auf dem Zielcomputer und navigieren Sie zu "Zertifikate (lokaler Computer) / Persönlich / Zertifikate". Klicken Sie mit der rechten Maustaste in den mittleren Bereich und wählen Sie Alle Aufgaben → Importieren.
Das resultierende Zertifikat
Beide oben genannten Befehle erstellen ein Zertifikat für die Domänen
localhost
und*.dev.local
.Die Win10-Version hat zusätzlich eine Live-Zeit von 15 Jahren und den lesbaren Anzeigenamen "Dev Cert * .dev.local, dev.local, localhost".
Update: Wenn Sie im Parameter
-DnsName
(wie oben gezeigt) mehrere Hostnameneinträge angeben, wird der erste dieser Einträge zum Betreff der Domäne (AKA Common Name). Die vollständige Liste aller Hostnameneinträge wird im Feld Subject Alternative Name (SAN) des Zertifikats gespeichert. (Vielen Dank an @BenSewards für den Hinweis.)Nach der Erstellung ist das Zertifikat sofort in allen HTTPS-Bindungen von IIS verfügbar (Anweisungen unten).
Vertrauen Sie dem Zertifikat
Das neue Zertifikat ist nicht Teil einer Vertrauenskette und wird daher von keinem Browser als vertrauenswürdig angesehen. Um dies zu ändern, kopieren wir das Zertifikat in den Zertifikatspeicher für vertrauenswürdige Stammzertifizierungsstellen auf Ihrem Computer:
Öffnen Sie mmc.exe, Datei → Snap-In hinzufügen / entfernen → wählen Sie "Zertifikate" in der linken Spalte → Hinzufügen → wählen Sie "Computerkonto" → Weiter → "Lokaler Computer ..." → Fertig stellen → OK
Wählen Sie in der linken Spalte "Zertifikate (lokaler Computer) / Persönlich / Zertifikate".
Suchen Sie das neu erstellte Zertifikat (in Win 10 kann die Spalte "Anzeigename" hilfreich sein).
Wählen Sie dieses Zertifikat aus und drücken Sie Strg-C, um es in die Zwischenablage zu kopieren.
Wählen Sie in der linken Spalte "Zertifikate (lokaler Computer) / Vertrauenswürdige Stammzertifizierungsstellen / Zertifikate".
Drücken Sie Strg-V, um Ihr Zertifikat in diesen Speicher einzufügen.
Das Zertifikat sollte in der Liste der vertrauenswürdigen Stammautoritäten angezeigt werden und gilt jetzt als vertrauenswürdig.
Verwendung in IIS
Jetzt können Sie zum IIS-Manager gehen, die Bindungen einer lokalen Website auswählen → Hinzufügen → https → einen Hostnamen des Formulars
myname.dev.local
eingeben (Ihr Zertifikat ist nur gültig für*.dev.local
) und das neue Zertifikat auswählen → OK.Zu Hosts hinzufügen
Fügen Sie außerdem Ihren Hostnamen zu C: \ Windows \ System32 \ drivers \ etc \ hosts hinzu:
glücklich
Jetzt sollten Chrome und IE das Zertifikat als vertrauenswürdig behandeln und Ihre Website beim Öffnen laden
https://myname.dev.local
.Firefox unterhält einen eigenen Zertifikatspeicher. Um Ihr Zertifikat hier hinzuzufügen, müssen Sie Ihre Website in FF öffnen und zu den Ausnahmen hinzufügen, wenn FF Sie vor dem Zertifikat warnt.
Für den Edge-Browser sind möglicherweise weitere Aktionen erforderlich (siehe weiter unten).
Testen Sie das Zertifikat
Um Ihre Zertifikate zu testen, ist Firefox die beste Wahl. (Glaub mir, ich bin selbst ein Chrome-Fan-Boy, aber FF ist in diesem Fall besser.)
Hier sind die Gründe:
Diese Warnung ist richtig! Wie oben erwähnt, verwendet Firefox den Windows-Zertifikatspeicher nicht und vertraut diesem Zertifikat nur, wenn Sie eine Ausnahme hinzufügen. Die Schaltfläche dazu befindet sich direkt unter den Warnungen.
Diese Warnung zeigt, dass Sie etwas falsch gemacht haben. Die (Platzhalter-) Domain Ihres Zertifikats stimmt nicht mit der Domain Ihrer Website überein. Das Problem muss gelöst werden, indem entweder die (Unter-) Domain Ihrer Website geändert wird oder indem ein neues Zertifikat ausgestellt wird, das übereinstimmt. Tatsächlich könnten Sie in FF eine Ausnahme hinzufügen, auch wenn das Zertifikat nicht übereinstimmt, aber mit einer solchen Kombination würden Sie in Chrome niemals ein grünes Vorhängeschlosssymbol erhalten.
Firefox kann an dieser Stelle viele andere nette und verständliche Warnungen zu Zertifikaten anzeigen, wie abgelaufene Zertifikate, Zertifikate mit veralteten Signaturalgorithmen usw. Ich habe keinen anderen Browser gefunden, der mir dieses Feedback gegeben hat, um Probleme zu beheben.
Welches (Sub-) Domain-Muster soll ich entwickeln?
Im obigen Befehl New-SelfSignedCertificate haben wir die Platzhalterdomäne verwendet
*.dev.local
.Sie denken vielleicht: Warum nicht verwenden
*.local
?Einfacher Grund: Es ist als Wildcard-Domain illegal.
Platzhalterzertifikate müssen mindestens einen Domainnamen der zweiten Ebene enthalten.
Domains des Formulars
*.local
sind also gut geeignet, um HTTP-Websites zu entwickeln. Aber nicht so sehr für HTTPS, da Sie gezwungen wären, für jedes neue Projekt, das Sie starten, ein neues Matching-Zertifikat auszustellen.Wichtige Randnotizen:
motör_head.dev.local
mit Ihrem Platzhaltermuster abzugleichen*.dev.local
. Sie werden eingehalten, wenn Sie zu wechselnmotoer-head.dev.local
.*.dev.local
Streichhölzermyname.dev.local
aber NICHTother.myname.dev.local
!*.*.dev.local
) sind in Zertifikaten NICHT möglich. Soother.myname.dev.local
kann nur durch eine Wildcard der Form abgedeckt werden*.myname.dev.local
. Daher ist es am besten, keinen Domain-Teil der vierten Ebene zu verwenden. Fügen Sie alle Ihre Variationen in den Teil der dritten Ebene ein. Auf diese Weise erhalten Sie ein einziges Zertifikat für alle Ihre Entwicklungsseiten.Das Problem mit Edge
Hier geht es nicht wirklich um selbstsignierte Zertifikate, sondern um den gesamten Prozess:
Nachdem Sie die obigen Schritte ausgeführt haben, zeigt Edge beim Öffnen möglicherweise keinen Inhalt an
myname.dev.local
.Der Grund ist ein charakteristisches Merkmal der Netzwerkverwaltung von Windows 10 für moderne Apps, das als "Netzwerkisolation" bezeichnet wird.
Um dieses Problem zu lösen, öffnen Sie eine Eingabeaufforderung mit Administratorrechten und geben Sie den folgenden Befehl einmal ein:
Weitere Informationen zur Edge- und Netzwerkisolation finden Sie hier: https://blogs.msdn.microsoft.com/msgulfcommunity/2015/07/01/how-to-debug-localhost-on-microsoft-edge/
quelle
appname.dev has a security policy called HTTP Strict Transport Security (HSTS), which means that Firefox can only connect to it securely. You can’t add an exception to visit this site.
was, wie es heißt, es Ihnen nicht erlaubt, die Client-Ausnahme entgegen Ihrer Anweisung hinzuzufügen. Ist dies eine schlechte Konfiguration in IIS selbst in Bezug auf die SSL-Einstellungen, SSL erforderlich und die Clientzertifikatoptionen?*.mydomain.com
kann also ein gültiges Zertifikat sein,me.mydomain.com
aber nicht fürme.at.mydomain.com
.Ich hatte das gleiche Problem, als ich SSL für ein auf IIS 8 gehostetes Projekt aktivieren wollte. Schließlich war das verwendete Tool OpenSSL , nachdem ich viele Tage mit makecert- Befehlen gekämpft hatte. Das Zertifikat wird in Debian generiert, aber ich konnte es nahtlos in importieren IIS 7 und 8.
Laden Sie die mit Ihrem Betriebssystem kompatible OpenSSL und diese Konfigurationsdatei herunter . Legen Sie die Konfigurationsdatei als Standardkonfiguration von OpenSSL fest.
Zuerst generieren wir den privaten Schlüssel und das Zertifikat der Zertifizierungsstelle (CA). Dieses Zertifikat dient zum Signieren der Zertifikatsanforderung (CSR).
Sie müssen alle Felder ausfüllen, die für diesen Prozess erforderlich sind.
openssl req -new -x509 -days 3650 -extensions v3_ca -keyout root-cakey.pem -out root-cacert.pem -newkey rsa:4096
Sie können eine Konfigurationsdatei mit folgenden Standardeinstellungen erstellen: Jetzt generieren wir die Zertifikatanforderung, die an die Zertifizierungsstellen gesendet wird.
Der allgemeine Name muss als Domain Ihrer Site festgelegt werden, z. B. public.organization.com .
openssl req -new -nodes -out server-csr.pem -keyout server-key.pem -newkey rsa:4096
Jetzt wird die Zertifikatanforderung mit dem generierten CA-Zertifikat signiert.
openssl x509 -req -days 365 -CA root-cacert.pem -CAkey root-cakey.pem -CAcreateserial -in server-csr.pem -out server-cert.pem
Das generierte Zertifikat muss in eine PFX-Datei exportiert werden, die in den IIS importiert werden kann.
openssl pkcs12 -export -out server-cert.pfx -inkey server-key.pem -in server-cert.pem -certfile root-cacert.pem -name "Self Signed Server Certificate"
In diesem Schritt importieren wir die Zertifikatszertifizierungsstelle.
Auf Ihrem Server muss das CA-Zertifikat in die vertrauenswürdigen Stammzertifizierungsstellen importiert werden, damit IIS dem zu importierenden Zertifikat vertrauen kann. Denken Sie daran, dass das in den IIS zu importierende Zertifikat mit dem Zertifikat der Zertifizierungsstelle signiert wurde.
Mit diesem Schritt vertraut der IIS auf die Authentizität unseres Zertifikats.
In unserem letzten Schritt importieren wir das Zertifikat in IIS und fügen die Bindungsstelle hinzu.
Gehen Sie nun im IIS-Manager zu Ihrer Site und wählen Sie Bindungen ... und fügen Sie eine neue Bindung hinzu.
Wählen Sie https als Bindungsart aus, und Sie sollten das importierte Zertifikat sehen können.
quelle
Eine andere Möglichkeit besteht darin, ein selbstsigniertes Zertifikat zu erstellen, mit dem Sie den Domainnamen pro Website angeben können. Dies bedeutet, dass Sie es für viele Domainnamen verwenden können.
Im IIS-Manager
Jetzt auf Ihrer Website in IIS ...
quelle
Eine andere einfache Möglichkeit, ein selbstsigniertes Zertifikat zu generieren, ist die Verwendung von Jexus Manager.
https://www.jexusmanager.com/de/latest/tutorials/self-signed.html
quelle