it-swarm.com.de

Wie erstelle ich ein selbstsigniertes Zertifikat für einen Domainnamen für die Entwicklung?

Ich habe subdomain.example.com, das ich für Entwicklungszwecke benutze. Meine Webanwendungslösung enthält eine Web-API usw., die ich von externen Systemen aufrufen muss, daher verwende ich nicht localhost.

Ich muss jetzt auf SSL testen und benötige ein Zertifikat für mein subdomain.example.com Entwicklungsdomainname.

Ich habe versucht, ein selbstsigniertes Zertifikat zu erstellen (siehe http://technet.Microsoft.com/en-us/library/cc753127 (v = ws.10) .aspx ), aber nur dieses Zertifikat arbeitet 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-Subdomäne erstellen muss?

112
Moiz Tankiwala

Füge diese Information hinzu, weil die akzeptierte Antwort die Frage nicht vollständig zu beantworten scheint oder zumindest das Problem für mich nicht löst.

Mit der selbstsignierten Zertifikatfunktion von IIS können Sie den allgemeinen Namen (Common Name, CN) für das Zertifikat nicht festlegen und daher kein Zertifikat erstellen, das an die von Ihnen gewählte Unterdomäne gebunden ist.

Ein Weg, um das Problem zu umgehen, besteht darin, makecert.exe zu verwenden, das mit dem .Net 2.0 SDK gebündelt ist. Auf meinem Server ist es um:

C:\Program Files\Microsoft.Net\SDK\v2.0 64bit\Bin\makecert.exe

Sie können eine Signaturautorität erstellen und wie folgt im LocalMachine-Zertifikat-Repository speichern (diese Befehle müssen von einem Administratorkonto oder innerhalb einer Eingabeaufforderung mit erhöhten Rechten ausgeführt werden):

makecert.exe -n "CN=My Company Development Root CA,O=My Company,
 OU=Development,L=Wallkill,S=NY,C=US" -pe -ss Root -sr LocalMachine
 -sky exchange -m 120 -a sha1 -len 2048 -r

Anschließend können Sie ein Zertifikat erstellen, das an Ihre Unterdomäne gebunden und von Ihrer neuen Behörde signiert ist:

(Beachten Sie, dass der Wert des Parameters -in mit dem CN-Wert übereinstimmen muss, der zum Generieren der oben genannten Berechtigung verwendet wurde.)

makecert.exe -n "CN=subdomain.example.com" -pe -ss My -sr LocalMachine
 -sky exchange -m 120 -in "My Company Development Root CA" -is Root
 -ir LocalMachine -a sha1 -eku 1.3.6.1.5.5.7.3.1

Ihr Zertifikat sollte dann in IIS Manager erscheinen, um an Ihre Site gebunden zu werden, wie in Tom Halls Beitrag erläutert.

Ein großes Lob für diese Lösung an Mike O'Brien für seinen hervorragenden Blog-Beitrag unter http://www.mikeobrien.net/blog/creating-self-signed-wildcard

128
jlmt

Verwenden von PowerShell

Ab Windows 8.1 und Windows Server 2012 R2 (Windows PowerShell 4.0) können Sie mit dem neuen Cmdlet New-SelfSignedCertificate Ein selbstsigniertes Zertifikat erstellen:

Beispiele:

New-SelfSignedCertificate -DnsName www.mydomain.com -CertStoreLocation cert:\LocalMachine\My

New-SelfSignedCertificate -DnsName subdomain.mydomain.com -CertStoreLocation cert:\LocalMachine\My

New-SelfSignedCertificate -DnsName *.mydomain.com -CertStoreLocation cert:\LocalMachine\My

Mit dem IIS Manager

  1. Starten Sie den IIS Manager
  2. Wählen Sie auf Serverebene unter IIS die Option Serverzertifikate aus
  3. Wählen Sie auf der rechten Seite unter Aktionen die Option Selbstsigniertes Zertifikat erstellen aus
  4. Dort, wo "Geben Sie einen Anzeigenamen für das Zertifikat an" steht, geben Sie einen geeigneten Namen als Referenz ein.
    1. Beispiele: www.domain.com Oder subdomain.domain.com
  5. Wählen Sie dann Ihre Website aus der Liste auf der linken Seite
  6. Wählen Sie auf der rechten Seite unter Aktionen die Option Bindungen aus
  7. Fügen Sie eine neue HTTPS-Bindung hinzu und wählen Sie das soeben erstellte Zertifikat aus (wenn es sich bei Ihrem Zertifikat um ein Platzhalterzertifikat handelt, müssen Sie einen Hostnamen angeben).
  8. Klicken Sie auf OK und testen Sie es.
111
Tom Hall

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:

New-SelfSignedCertificate -DnsName *.mydomain.com, localhost -CertStoreLocation cert:\LocalMachine\My

m dem neuen Zertifikat zu vertrauen:

  • Öffnen Sie mmc.exe
  • Gehen Sie zu Konsolenstamm -> Zertifikate (lokaler Computer) -> Persönlich
  • Wählen Sie das von Ihnen erstellte Zertifikat aus, klicken Sie mit der rechten Maustaste auf -> Alle Aufgaben -> Exportieren und folgen Sie dem Exportassistenten, um eine PFX-Datei zu erstellen
  • Gehen Sie zu Konsolenstamm -> Zertifikate -> Vertrauenswürdige Stammzertifizierungsstellen und importieren Sie die neue PFX-Datei

m das Zertifikat an Ihre Site zu binden:

  • Öffnen Sie den IIS Manager
  • Wählen Sie Ihre Site aus und klicken Sie im rechten Bereich auf Site bearbeiten -> Bindungen
  • Fügen Sie eine neue https-Bindung mit dem richtigen Hostnamen und dem neuen Zertifikat hinzu
48
DivineOps

Ich musste mich durch selbstsignierte Zertifikate unter Windows rätseln, indem ich Teile der gegebenen Antworten und weitere Ressourcen kombinierte. Hier ist meine eigene (und hoffentlich vollständige) Anleitung. Hoffe, es erspart Ihnen einige meiner eigenen schmerzhaften Lernkurven. Es enthält auch Informationen 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

Verwenden Sie nicht makecert.exe. Es wurde von Microsoft veraltet.
Die moderne Methode verwendet einen Powershell-Befehl.

Windows 10:

Öffnen Sie Powershell mit Administratorrechten:

New-SelfSignedCertificate  -DnsName "*.dev.local", "dev.local", "localhost"  -CertStoreLocation cert:\LocalMachine\My  -FriendlyName "Dev Cert *.dev.local, dev.local, localhost"  -NotAfter (Get-Date).AddYears(15)

Windows 8, Windows Server 2012 R2:

In Powershell sind auf diesen Systemen die Parameter -FriendlyName und -NotAfter nicht vorhanden. Entfernen Sie sie einfach von der obigen Befehlszeile.
Öffnen Sie Powershell mit Administratorrechten:

New-SelfSignedCertificate  -DnsName "*.dev.local", "dev.local", "localhost"  -CertStoreLocation cert:\LocalMachine\My

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 Laufzeit von 15 Jahren und den lesbaren Anzeigenamen "Dev Cert * .dev.local, dev.local, localhost".

Update: Wenn Sie im Parameter -DnsName (Wie oben gezeigt) mehrere Hostnamen-Einträge angeben, wird der erste dieser Einträge zum Betreff der Domain ( AKA Common Name). Die vollständige Liste aller Hostnamen-Einträge wird im Feld Subject Alternative Name (SAN) des Zertifikats gespeichert. (Vielen Dank an @BenSewards für diesen 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 eingestuft. 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

Exportiere dein Zertifikat aus deinem persönlichen Geschäft

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).
Klicken Sie mit der rechten Maustaste auf dieses Zertifikat → Alle Aufgaben → Exportieren ... → Weiter → wählen Sie "Nein, den privaten Schlüssel nicht exportieren" → Weiter → wählen Sie "DER verschlüsselt ..." → Weiter → geben Sie den Dateinamen und ein sparen.

Hinweis: Wir verwenden das PFX-Dateiformat bewusst nicht für den Export. Es würde Ihren privaten Schlüssel in die Exportdatei aufnehmen und Sie möchten normalerweise nicht, dass Ihr privater Schlüssel irgendwohin geht!

Importieren Sie Ihr Zertifikat in Ihren Trusted Root CAs-Speicher

Klicken Sie in der linken Spalte mit der rechten Maustaste auf "Zertifikate (Lokaler Computer)/Vertrauenswürdige Stammzertifizierungsstellen/Zertifikate" → Alle Aufgaben → Importieren ... → Weiter → Wählen Sie die gerade exportierte Datei aus → Weiter → "Legen Sie alle Zertifikate in folgendem Speicher ab: Vertrauenswürdige Stammzertifizierungsstellen "→ Weiter → Fertig stellen.

Verwendung in der ISS

Nun können Sie zu IIS Manager gehen, die Bindungen einer lokalen Website auswählen → Hinzufügen → https → einen Hostnamen der Form myname.dev.local Eingeben (Ihr Zertifikat ist nur gültig für *.dev.local) und wählen Sie das neue Zertifikat → OK.

Zu Hosts hinzufügen

Fügen Sie Ihren Hostnamen auch zu C:\Windows\System32\drivers\etc\hosts hinzu:

127.0.0.1  myname.dev.local

Happy

Jetzt sollten Chrome und IE das Zertifikat als vertrauenswürdig behandeln und Ihre Website laden, wenn Sie https://myname.dev.local Öffnen.

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. (Glauben Sie mir, ich bin selbst ein Chrome Fan-Boy, aber FF ist in diesem Fall besser.)

Hier sind die Gründe:

  • Firefox verwendet einen eigenen SSL-Cache, der beim erneuten Laden der Schicht gelöscht wird. Änderungen an den Zertifikaten Ihrer lokalen Websites werden daher sofort in den Warnungen von FF angezeigt, während andere Browser möglicherweise einen Neustart oder ein manuelles Löschen des Windows-SSL-Caches erfordern.
  • FF gibt Ihnen auch einige wertvolle Hinweise, um die Gültigkeit Ihres Zertifikats zu überprüfen: Klicken Sie auf Erweitert, wenn FF die Zertifikatswarnung anzeigt. FF zeigt Ihnen einen kurzen Textblock mit einer oder mehreren möglichen Warnungen in den mittleren Zeilen des Textblocks:

Das Zertifikat ist nicht vertrauenswürdig, da es selbst signiert ist.

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 dafür befindet sich direkt unter den Warnungen.

Das Zertifikat ist nicht gültig für den Namen ...

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 Sie entweder die (Sub-) Domain Ihrer Website ändern oder ein neues Zertifikat ausstellen, das übereinstimmt. Tatsächlich könnten Sie in FF eine Ausnahme hinzufügen, selbst 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 Zertifizierungswarnungen anzeigen, z. B. abgelaufene Zertifikate, Zertifikate mit veralteten Signaturalgorithmen usw. Ich habe keinen anderen Browser gefunden, der mir so viel Feedback gegeben hat, um Probleme zu beheben.

Welches (Sub-) Domainmuster soll ich entwickeln?

Im obigen New-SelfSignedCertificate-Befehl haben wir die Wildcard-Domain *.dev.local Verwendet.

Sie denken vielleicht: Warum nicht *.local Verwenden?

Einfacher Grund: Es ist als Wildcard-Domain illegal.
Wildcard-Zertifikate müssen enthalten mindestens einen Domainnamen der zweiten Ebene.

Also, Domains der Form *.local Sind nett, um HTTP-Websites zu entwickeln. Aber nicht so sehr für HTTPS, weil Sie gezwungen wären, für jedes neue Projekt, das Sie starten, ein neues passendes Zertifikat auszustellen.

Wichtige Hinweise:

  • Gültige Host-Domains dürfen NUR Buchstaben von z, Ziffern, Bindestriche und Punkte enthalten. Keine Unterstriche erlaubt! Einige Browser sind sehr wählerisch in Bezug auf dieses Detail und können es Ihnen schwer machen, wenn sie sich hartnäckig weigern, Ihre Domain motör_head.dev.local Mit Ihrem Platzhaltermuster *.dev.local Abzugleichen. Sie werden eingehalten, wenn Sie zu motoer-head.dev.local Wechseln.
  • Ein Platzhalter in einem Zertifikat entspricht nur EINEM Etikett (= Abschnitt zwischen zwei Punkten) in einer Domäne, niemals mehr. *.dev.local Stimmt mit myname.dev.local Überein, aber NICHT mit other.myname.dev.local!
  • Mehrstufige Wildcards (*.*.dev.local) Sind in Zertifikaten NICHT möglich. Daher kann other.myname.dev.local Nur durch einen Platzhalter der Form *.myname.dev.local Abgedeckt werden. Aus diesem Grund ist es am besten, keinen Domänenteil der vierten Ebene zu verwenden. Fügen Sie alle Ihre Variationen in den dritten Teil ein. Auf diese Weise erhalten Sie ein einziges Zertifikat für alle Ihre Entwickler-Sites.

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 von myname.dev.local Möglicherweise keinen any Inhalt an.
Der Grund ist ein charakteristisches Merkmal der Netzwerkverwaltung von Windows 10 für moderne Apps, genannt "Netzwerkisolation".

Um dieses Problem zu lösen, öffnen Sie eine Eingabeaufforderung mit Administratorrechten und geben Sie den folgenden Befehl einmal ein:

CheckNetIsolation LoopbackExempt -a -n=Microsoft.MicrosoftEdge_8wekyb3d8bbwe

Weitere Informationen zu Edge und Netzwerkisolation finden Sie hier: https://blogs.msdn.Microsoft.com/msgulfcommunity/2015/07/01/how-to-debug-localhost-on-Microsoft-Edge/

26
Jpsy

Ich hatte das gleiche Problem, als ich SSL für ein Projekt aktivieren wollte, das auf IIS 8 gehostet wurde. Schließlich verwendete ich OpenSSL , nachdem ich viele Tage mit - gekämpft hatte. makecert ​​Befehle. Das Zertifikat wird in Debian generiert, aber ich konnte es nahtlos in IIS 7 und 8) importieren.

Laden Sie die mit Ihrem Betriebssystem kompatible OpenSSL und this Konfigurationsdatei herunter. Stellen Sie die Konfigurationsdatei als Standardkonfiguration von OpenSSL ein.

Zuerst werden der private Schlüssel und das Zertifikat der Zertifizierungsstelle (CA) generiert. Mit diesem Zertifikat wird die Zertifikatsanforderung (CSR) signiert.

Sie müssen alle Felder ausfüllen, die für diesen Vorgang erforderlich sind.

  1. 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: Nun wird die Zertifikatsanforderung generiert. Dies ist die Datei, die an die Zertifizierungsstellen gesendet wird.

Der allgemeine Name muss für die Domain Ihrer Site festgelegt werden, zum Beispiel: public.organization.com .

  1. openssl req -new -nodes -out server-csr.pem -keyout server-key.pem -newkey rsa:4096

Jetzt wird die Zertifikatsanforderung mit dem generierten CA-Zertifikat signiert.

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

  1. 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 Zertifikat-CA.

  1. In Ihrem Server muss das CA-Zertifikat in die vertrauenswürdigen Stammzertifizierungsstellen importiert werden, damit IIS dem zu importierenden Zertifikat vertrauen kann. Beachten Sie, dass das in den IIS zu importierende Zertifikat mit dem signiert wurde Zertifikat der CA.

    • Öffnen Sie die Eingabeaufforderung und geben Sie mmc ein.
    • Klicken Sie auf Datei.
    • Wählen Sie Snap in hinzufügen/entfernen ....
    • Doppelklicken Sie auf Zertifikate.
    • Wählen Sie Computerkonto und Weiter ->.
    • Wählen Sie Lokaler Computer und Fertig stellen.
    • Ok.
    • Gehen Sie zu Certificates -> Trusted Root Certification Authorities -> Certificates, klicken Sie mit der rechten Maustaste auf Certificates und wählen Sie Alle Aufgaben -> Importieren ...

enter image description here

  • Wählen Sie Weiter -> Durchsuchen ...
  • Sie müssen Alle Dateien auswählen, um den Speicherort der root-cacert.pem -Datei zu durchsuchen.
  • Klicken Sie auf Weiter und wählen Sie Alle Zertifikate in folgendem Speicher ablegen: Trusted Root Certification Authorities .
  • Klicken Sie auf Weiter und Fertig stellen.

enter image description here

Mit diesem Schritt vertrauen die IIS auf die Echtheit unseres Zertifikats.

  1. In unserem letzten Schritt importieren wir das Zertifikat in IIS und fügen die Bindungssite hinzu.

    • Öffnen Sie Internetinformationsdienste-Manager (IIS) oder geben Sie inetmgr in der Eingabeaufforderung ein und rufen Sie Serverzertifikate auf.
    • Klicken Sie auf Importieren ....
    • Legen Sie den Pfad der PFX-Datei, die Passphrase und Zertifikatspeicher auswählen unter Webhosting fest.

enter image description here

  • Klicken Sie auf OK .
  • Rufen Sie nun Ihre Site im IIS Manager auf und wählen Sie Bindings ... und Add eine neue Bindung aus.

  • Wählen Sie https als Bindungsart und Sie sollten das importierte Zertifikat sehen können.

  • Klicken Sie auf OK und alles ist erledigt.

enter image description here

16
Joseph

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.

In IIS Manager

  1. Klicken Sie auf den Knoten Maschinenname
  2. Öffnen Sie Serverzertifikate
  3. Wählen Sie im Bedienfeld "Aktionen" die Option "Selbstsigniertes Zertifikat erstellen".
  4. Geben Sie unter "Geben Sie einen Anzeigenamen an ..." den Namen "* Dev" ein (wählen Sie "Personal" aus der Typenliste aus).
  5. Sparen

Jetzt auf Ihrer Website in IIS ...

  1. Verwalten Sie die Bindungen
  2. Erstellen Sie eine neue Bindung für HTTPs
  3. Wählen Sie Ihr selbstsigniertes Zertifikat aus der Liste aus
  4. Nach der Auswahl wird das Feld für den Domainnamen aktiviert und Sie können Ihren Domainnamen eingeben.

enter image description here

2
testpattern

Eine andere einfache Möglichkeit, ein selbstsigniertes Zertifikat zu erstellen, ist die Verwendung von Jexus Manager.

Jexus Manager

  1. Wählen Sie im Bereich Verbindungen einen Serverknoten aus.
  2. Klicken Sie im mittleren Bereich auf das Symbol Serverzertifikate, um die Verwaltungsseite zu öffnen.
  3. Klicken Sie im Bedienfeld „Aktionen“ auf den Menüpunkt „Selbstsigniertes Zertifikat erstellen ...“.

https://www.jexusmanager.com/en/latest/tutorials/self-signed.html

0
Lex Li