2016-04-26 6 views
6

Ich möchte SSL-Verbindungen in einer Entwicklungsumgebung mit IIS testen. Dazu muss ich ein selbstsigniertes Stammzertifikat erstellen, das im Computerspeicher installiert wird, und ein weiteres Zertifikat, das mit dem Stammzertifikat signiert wird, um es in IIS zu installieren.Erstellen gültiger Test SSL-Zertifikate für IIS

Das mit makecert tun ist jetzt veraltet, also frage ich mich, wie man es mit Powershell und dem New-SelfSignedCertificate Befehl macht.

Bonuspunkte, wenn Sie die wichtigsten Nutzungseinstellungen richtig :-)

Hinweis erhalten: das selbstsignierte zertifiziert direkt in IIS nicht funktioniert, da der Browser und WCF hält sie für ungültig.


als Referenz, hier ist, wie es mit makecert zu tun:

# create the self signed root certificate 
makecert -n "CN=root.lan" -r -sv root.pvk root.cer 

# create the certificate for IIS that gets signed with the root certificate 
makecert -sk "Local Certificate" -iv root.pvk -n "CN=localhost" -ic root.cer -sr localmachine -ss my -sky exchange -pe 

# convert to other formats 
cert2spc localhost.cer localhost.spc 
pvk2pfx -pvk localhost.pvk -spc localhost.spc -pfx localhost.pfx 
+0

'MakeCert.exe' ist genug, wenn Sie nur RSA-Schlüssel verwenden, aber es ist besser, einige zusätzliche Optionen von' MakeCert.exe' zu ​​verwenden. 'New-SelfSignedCertificate' bringt Ihnen keine Vorteile. Andere Powershell-Module, die im Internet verfügbar sind, könnten besser sein. Sie können [OpenSSL.exe] (https://www.openssl.org/) statt 'MakeCert.exe' verwenden, um entweder RSA- oder Elliptische-Kurven-Zertifikate zu erstellen, die Sie in IIS verwenden können.Wenn Ihr IIS-Server über das Internet (Port 80) verfügbar ist, können Sie Let's Encrypt verwenden, um ein kostenloses echtes SSL-Zertifikat zu erhalten, und die Clients müssen Ihr "CA" -Zertifikat nicht im vertrauenswürdigen Root installieren. – Oleg

+1

die Frage war, 'New-SelfSignedCertificate' aus einem bestimmten Grund zu verwenden. Ich möchte nicht 'MakeCert' oder' OpenSSL' verwenden. – MovGP0

+0

Verwenden Sie einfach Startpowershell und verwenden Sie 'New-SelfSignedCertificate -?' Und 'get-help New-SelfSignedCertificate-Beispiele '. Die Möglichkeiten hängen von der Windows-Version ab, die Sie verwenden. Vergleichen https://technet.microsoft.com/en-us/library/hh848633.aspx mit https://technet.microsoft.com/en-us/library/hh848633(v=wps.630).aspx – Oleg

Antwort

5

Die neue Version von New-SelfSignedCertificate, die unter Windows 10 enthalten ist, wird here beschrieben. Man kann New-SelfSignedCertificate -? und get-help New-SelfSignedCertificate -examples verwenden, um einige zusätzliche Informationen zu erhalten.

Die Dokumentation und die Beispiele könnte für die Schaffung von zwei Zertifikaten noch nicht klar genug scheint:

  • ein selbst signiertes Zertifikat, das als CA-Zertifikat verwendet wird, aus Ihrem Beispiel
  • das zweite SSL-Zertifikat, welches mit dem ersten Zertifikat signiert hat.

Die Umsetzung der folgenden sein könnte (I unter der Option schrieb in mehreren Zeilen nur den Text lesbarer zu machen):

New-SelfSignedCertificate -HashAlgorithm sha384 -KeyAlgorithm RSA -KeyLength 4096 
    -Subject "CN=My Test (PowerShell) Root Authority,O=OK soft GmbH,C=DE" 
    -KeyUsage DigitalSignature,CertSign -NotAfter (get-date).AddYears(10) 
    -CertStoreLocation "Cert:\CurrentUser\My" -Type Custom 

die Ausgabe wie

Directory: Microsoft.PowerShell.Security\Certificate::CurrentUser\My 


Thumbprint        Subject 
----------        ------- 
B7DE93CB88E99B01D166A986F7BF2D82A0E541FF CN=My Test (PowerShell) Root Authority, O=OK soft GmbH, C=DE 

Der aussehen Der Wert B7DE93CB88E99B01D166A986F7BF2D82A0E541FF ist wichtig, um das Zertifikat zum Signieren zu verwenden. Wenn Sie den Wert vergessen können Sie es durch CN Name

dir cert:\CurrentUser\My | where Subject -Like "CN=My Test (PowerShell)*" 

oder durch Verwendung finden certutil.exe -user -store My auf unsere Zertifikate auf meinem Speicher des aktuellen Benutzers angezeigt werden soll.

SSL-Zertifikat zu erstellen und es mit Bezug auf zuvor erstellte Zertifikat ein zu unterschreiben kann mir die folgenden

New-SelfSignedCertificate -Type Custom -Subject "CN=ok01.no-ip.org" 
    -HashAlgorithm sha256 -KeyAlgorithm RSA -KeyLength 2048 
    -KeyUsage KeyEncipherment,DigitalSignature 
    -CertStoreLocation "cert:\LocalMachine\My" 
    -Signer cert:\CurrentUser\My\B7DE93CB88E99B01D166A986F7BF2D82A0E541FF 
    -TextExtension @("2.5.29.37={text}1.3.6.1.5.5.7.3.1,1.3.6.1.5.5.7.3.2","2.5.29.17={text}DNS=ok01.no-ip.org&DNS=ok01.fritz.box") 

Es scheint, zum Beispiel tun, dass das endgültige Zertifikat alle erforderlichen Eigenschaften haben. Es ist klar, dass die Werte aus vielen der obigen Parameter nur Beispiele enthalten, die Sie entsprechend Ihren Anforderungen ändern müssen. Ich beschreibe hier nicht einige andere übliche Schritte wie das Importieren eines Stammzertifikats in den vertrauenswürdigen Stamm, das Exportieren der Zertifikate und so weiter. Die Schritte sind nicht die Psrt Ihrer Hauptfrage.

+0

vielen Dank :-) – MovGP0

+1

@ MovGP0: Gern geschehen! Ich empfehle Ihnen immer noch, in Let's Encrypt nachzusehen. Sehen Sie [hier] (http://weblog.west-wind.com/posts/2016/Feb/22/Using-Lets-Encrypt-with-IIS-on-Windows). Ich benutze [letsencrypt-win-simple] (https://github.com/Lone-Coder/letsencrypt-win-simple), um ein SSL-Zertifikat zu erstellen, das die Let's Encrypt-Berechtigung verwendet, die auf allen Computern vertrauenswürdig ist. – Oleg

+1

Ich musste '-KeyUsage DigitalSignature, CertSign' für das CA-Zertifikat angeben, sonst würden Webbrowser das 'Kind'-Zertifikat nicht validieren. –