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

122

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.comEntwicklungsdomä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?

Moiz Tankiwala
quelle

Antworten:

133

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 Subdomäne gebunden ist.

Eine Möglichkeit, das Problem zu umgehen, ist die Verwendung von makecert.exe, die im Lieferumfang des .Net 2.0 SDK enthalten ist. Auf meinem Server ist es bei:

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

Sie können eine Signaturberechtigung erstellen und wie folgt im LocalMachine-Zertifikatsrepository speichern (diese Befehle müssen über ein Administratorkonto oder über eine 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 Subdomain 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 Ihrer obigen 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 im IIS-Manager angezeigt werden, damit es an Ihre Site gebunden ist, 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

jlmt
quelle
8
Ich konnte diese Arbeit machen. Ich musste die Visual Studio 2010-Eingabeaufforderung verwenden 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.
BrainSlugs83
3
Führen Sie alle oben genannten Befehle an einer Eingabeaufforderung mit Administratorrechten aus. Andernfalls wird die Meldung "Fehler: Codiertes Zertifikat zum Speichern fehlgeschlagen speichern => 0x5" angezeigt.
Giles Roberts
1
Ich möchte auch einen großartigen Link teilen. Erstellen von selbstsignierten Zertifikaten mit makecert.exe für die Entwicklung . Der Link erläutert die schrittweise Vorgehensweise zum Erstellen von Stammzertifikaten, Serverzertifikaten und Clientzertifikaten. Außerdem gibt es einen Beitrag, in dem erklärt wird, wie man sie benutzt.
Vikram Singh Saini
3
Browser wie Chrome sind mittlerweile veraltet sha1. Ersetzen -a sha512und erwägen Sie, -len 2048zum zweiten makecertAufruf hinzuzufügen , und alles sollte in Ordnung sein.
O. Jones
2
Beachten Sie, dass dies in Windows 10 anscheinend nicht mehr funktioniert (zumindest wie oben gezeigt). Ich musste stattdessen das PowerShell-Cmdlet verwenden, das ohne Probleme funktionierte.
DVK
119

Verwenden von PowerShell

Ab Windows 8.1 und Windows Server 2012 R2 (Windows PowerShell 4.0) können Sie mit dem neuen New-SelfSignedCertificateCmdlet 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

Verwenden des IIS-Managers

  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. Wenn dort "Geben Sie einen Anzeigenamen für das Zertifikat an" steht, geben Sie einen geeigneten Namen als Referenz ein.
    1. Beispiele: www.domain.comodersubdomain.domain.com
  5. Wählen Sie dann Ihre Website aus der Liste auf der linken Seite aus
  6. Wählen Sie auf der rechten Seite unter Aktionen die Option Bindungen
  7. Fügen Sie eine neue HTTPS-Bindung hinzu und wählen Sie das gerade 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.
Tom Hall
quelle
7
+1 für die PowerShell-Lösung. Schnell und einfach, und danach wurde das neue Zertifikat in meinem IIS-Manager> Verbindungen> Standorte> [Meine Anwendung]> Bindungen bearbeiten> Bearbeiten> Dropdown-Liste SSL-Zertifikat angezeigt.
Jon Schneider
3
Nachdem Sie die obigen Anweisungen befolgt und dann das Zertifikat angezeigt hatten, füllten die Anweisungen nicht das CN-Feld aus, das noch den Namen localhost hatte.
Dave
7
Genau. Das ist falsch! "Freundlicher Name" hat nichts mit CN zu tun. Ich weiß nicht, warum diese Antwort so viele positive Stimmen hat.
c00000fd
25
Dies wird positiv bewertet, da die Powershell-Methode tatsächlich funktioniert. (Siehe @ DivineOps-Antwort.) Hier ist der Befehl, den ich verwendet habe: New-SelfSignedCertificate -FriendlyName *.mydomain.local -DnsName *.mydomain.local, localhost -CertStoreLocation Cert:\LocalMachine\MyDadurch 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).
Anton
3
Die -NotAfterOption 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
Ben Amada
52

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

So vertrauen Sie dem neuen Zertifikat:

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

So binden Sie das Zertifikat an Ihre Site:

  • Öffnen Sie den IIS-Manager
  • Wählen Sie Ihre Site aus und wählen Sie im rechten Bereich Site bearbeiten -> Bindungen
  • Fügen Sie eine neue https-Bindung mit dem richtigen Hostnamen und dem neuen Zertifikat hinzu
DivineOps
quelle
2
Dies funktioniert nur unter Windows 8.1 und Windows Server 2012 R2 (Windows PowerShell 4.0) oder höher, obwohl Sie das Zertifikat in einem dieser Betriebssysteme generieren und später auf einen anderen Computer importieren können (ich habe dies gerade getan, um dieses Zertifikat mit SSRS zu verwenden installiert in Windows Server 2008 R2).
mprost
2
Anstatt es zu
exportieren und zu importieren, um
Kopieren / Einfügen funktioniert nur auf demselben Server. Sie können das Zertifikat auch bei gedrückter Strg-Taste aus dem Ordner "Persönlich" auf die vertrauenswürdigen Stammzertifizierungsstellen auf demselben Server ziehen. Wenn Sie möchten, dass ein anderer Host ohne Warnungen auf die Site zugreifen kann, müssen Sie diese exportieren und das Zertifikat in die lokale TRCA importieren lassen (Sie müssen den privaten Schlüssel nicht angeben).
Jessewolfe
40

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:

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 auf diesen Systemen sind die Parameter -FriendlyName und -NotAfter nicht vorhanden. Entfernen Sie sie einfach aus der obigen Befehlszeile.
Öffnen Sie Powershell mit Administratorrechten:

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

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 localhostund *.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.localeingeben (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:

127.0.0.1  myname.dev.local

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:

  • 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 eine manuelle Bereinigung des Windows-SSL-Cache benötigen.
  • Außerdem gibt FF Ihnen einige wertvolle Hinweise, um die Gültigkeit Ihres Zertifikats zu überprüfen: Klicken Sie auf Erweitert, wenn FF die Zertifikatwarnung 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 dazu befindet sich direkt unter den Warnungen.

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

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 *.localsind 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:

  • Gültige Hostdomänen dürfen NUR Buchstaben durch 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.localmit Ihrem Platzhaltermuster abzugleichen *.dev.local. Sie werden eingehalten, wenn Sie zu wechseln motoer-head.dev.local.
  • Ein Platzhalter in einem Zertifikat stimmt nur mit EINEM Label (= Abschnitt zwischen zwei Punkten) in einer Domain überein, niemals mehr. *.dev.local Streichhölzer myname.dev.local aber NICHTother.myname.dev.local !
  • Mehrstufige Platzhalter ( *.*.dev.local) sind in Zertifikaten NICHT möglich. So other.myname.dev.localkann 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:

CheckNetIsolation LoopbackExempt -a -n=Microsoft.MicrosoftEdge_8wekyb3d8bbwe

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/

Jpsy
quelle
2
Ich möchte hier darauf hinweisen, dass der erste DNS-Name auch als Betreff gespeichert wird, was möglicherweise nicht der Platzhalter sein soll.
Ben Sewards
@ BenSewards: Danke, dass du darauf hingewiesen hast, Ben. Ich habe die Antwort so aktualisiert, dass sie die Betreff- / SAN-Felddetails enthält. Haben Sie Probleme, einen Platzhalter-Hostnamen im Feld Betreff anstelle des Felds SAN zu haben?
Jpsy
@Jpsy - Dies funktioniert für mich lokal auf dem Server, auf dem das selbstsignierte Zertifikat erstellt wurde, jedoch nicht in Firefox oder Chrome auf meinen (Client-) Computern. Ich bekomme, 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?
Code Maverick
@CodeMaverick: Könnte möglicherweise ein Werbeblocker oder eine Antivirensoftware in Ihr Problem involviert sein? Eine andere Option könnte sein, dass das Zertifikat nicht mit dem von Ihnen verwendeten Domainnamen übereinstimmt. Denken Sie daran , dass die * in Cert des CN oder SAN nur repräsentieren kann ein Segment in dem Domain - Namen ( nicht alle Punkte enthält). Der CN *.mydomain.comkann also ein gültiges Zertifikat sein, me.mydomain.comaber nicht für me.at.mydomain.com.
Jpsy
14

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.

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

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

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

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

    • Öffnen Sie die Eingabeaufforderung und geben Sie mmc ein .
    • Klicken Sie auf Datei .
    • Wählen Sie Add / Remove Snap in ... .
    • Doppelklicken Sie auf Zertifikate .
    • Wählen Sie Computerkonto und Weiter -> .
    • Wählen Sie Lokaler Computer und Fertig stellen .
    • Ok .
    • Gehen Sie zu Zertifikate -> Vertrauenswürdige Stammzertifizierungsstellen -> Zertifikate , klicken Sie auf Zertifikate und wählen Sie Alle Aufgaben -> Importieren ...

Geben Sie hier die Bildbeschreibung ein

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

Geben Sie hier die Bildbeschreibung ein

Mit diesem Schritt vertraut der IIS auf die Authentizität unseres Zertifikats.

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

    • Öffnen Sie Internet Information Services (IIS) -Manager oder geben Sie inetmgr auf Eingabeaufforderung und gehen Sie zu Server - Zertifikate .
    • Klicken Sie auf Importieren ... .
    • Legen Sie den Pfad der PFX - Datei, das Passwort und wählen Sie Zertifikatspeicher auf Web - Hosting .

Geben Sie hier die Bildbeschreibung ein

  • Klicken Sie auf OK .
  • 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.

  • Klicken Sie auf OK und alles ist erledigt.

Geben Sie hier die Bildbeschreibung ein

Joseph
quelle
Ich wollte einen längeren Ablauf mit einem selbstsignierten Zertifikat haben und Windows SDK mit makecert.exe war auf dem Windows-Host nicht verfügbar. Ein Linux-Host und diese Antwort lieferten die Lösung.
Richk
Ich bin froh, dass Sie meine Antwort nützlich fanden.
Joseph
Wo soll das "public.organization.com" in den Befehl openssl eingefügt werden?
The One
2

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

  1. Klicken Sie auf Maschinennamenknoten
  2. Öffnen Sie die Serverzertifikate
  3. Wählen Sie im Bedienfeld "Aktionen" die Option "Selbstsigniertes Zertifikat erstellen".
  4. In 'Geben Sie einen Anzeigenamen an ...' nennen Sie ihn * Dev (wählen Sie 'Persönlich' aus der Typliste)
  5. sparen

Jetzt auf Ihrer Website in IIS ...

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

Geben Sie hier die Bildbeschreibung ein

Testmuster
quelle
Vielen Dank für die bisher nützlichste Antwort. Zumindest für die Entwicklung ist dies schnell.
cabaji99
0

Eine andere einfache Möglichkeit, ein selbstsigniertes Zertifikat zu generieren, 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 generieren ...“.

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

Lex Li
quelle