PowerShell-Snap-In: Konfigurieren von SSL mit dem IIS PowerShell-Snap-In
vom IIS-Team
Um SSL zu aktivieren, sind drei Schritte erforderlich:
- Abrufen und Installieren eines Zertifikats
- Erstellen einer SSL-Bindung in IIS
- Zuweisen des Zertifikats zum IP:Port der IIS-Bindung
und optional:
- Erzwingen von SSL auf Ihrer Website
Abrufen und Installieren eines Zertifikats
Das Abrufen von Zertifikaten ist eine wichtige Angelegenheit. Die Benutzer Ihrer Website müssen dem Zertifikat vertrauen, und deshalb müssen Sie es von einer vertrauenswürdigen Zertifizierungsstelle abrufen. Zu Testzwecken können Sie jedoch Ihr eigenes Zertifikat erstellen. Für diese exemplarische Vorgehensweise verwenden wir ein sogenanntes selbstsigniertes Zertifikat. Das Tool, mit dem wir ein selbstsigniertes Zertifikat erstellen, heißt MAKECERT und ist Teil der Visual Studio SDK-Tools. Der folgende MAKECERT-Befehl erstellt ein selbstsigniertes Zertifikat und installiert es automatisch im Windows-Zertifikatspeicher „my“:
makecert -r -pe -n "CN=MyTestServer" -b 07/01/2008 -e 07/01/2010 -eku 1.3.6.1.5.5.7.3.1 -ss my -sr localMachine -sky exchange -sp "Microsoft RSA SChannel Cryptographic Provider" -sy 12
Sie können die Zertifikate im Zertifikatspeicher über den Zertifikatanbieter überprüfen:
PS IIS:\> dir cert:\localmachine\my
Directory: Microsoft.PowerShell.Security\Certificate::localmachine\my
Thumbprint Subject
---------- -------
7ABF581E134280162AFFFC81E62011787B3B19B5 CN=MyTestServer
Hinweis
Ihnen wird ein anderer Zertifikatfingerabdruck angezeigt!
Jetzt verwenden wir das IIS PowerShell-Snap-In, um eine SSL-Bindung zu erstellen und sie dem gerade erstellten Zertifikat zuzuordnen.
Erstellen einer SSL-Bindung
Wir fügen die SSL-Bindung zur Standardwebsite mit einem aufgabenbasierten Cmdlet namens „New-WebBinding“ hinzu:
PS IIS:\> New-WebBinding -Name "Default Web Site" -IP "*" -Port 443 -Protocol https
Sie können die Bindungsauflistung mit dem folgenden Befehl aufrufen:
PS IIS:\> Get-WebBinding 'Default Web Site'
protocol bindingInformation
-------- ------------------
http *:80:
https *:443:
Zuweisen des Zertifikats zum IP:Port der IIS-Bindung
Jetzt wird es etwas schwierig, da SSL-Einstellungen im HTTP.SYS-Konfigurationsspeicher gespeichert werden und die Namenskonventionen etwas anders sind.
- In HTTP.SYS müssen Sie 0.0.0.0 verwenden, um alle IP-Adressen anzugeben; in IIS verwenden Sie ein Sternchen (*).
- In IIS verwenden Sie „:“, um die Bindung zu trennen. Da PowerShell einen Doppelpunkt als Laufwerksindikator interpretiert, wird stattdessen ein Ausrufezeichen verwendet:
Sie können mit „cd“ zum Verzeichnis „IIS:\SslBindings“ wechseln und die vorhandenen SSL-Bindungen abfragen. Das Verzeichnis ist bei einer IIS-Standardinstallation leer:
PS IIS:\> cd SslBindings
PS IIS:\SslBindings> dir
Jetzt können Sie den Zertifikathash verwenden, den wir in Schritt 1 erhalten haben, und ihn allen IP-Adressen (0.0.0.0) und dem SSL-Port 443 zuordnen:
PS IIS:\SslBindings> get-item cert:\LocalMachine\MY\7ABF581E134280162AFFFC81E62011787B3B19B5 | new-item 0.0.0.0!443
Der vorherige Befehl hat die folgende SSL-Bindung generiert:
IP Address Port Store Sites
---------- ---- ----- -----
0.0.0.0 443 My Default Web Site
SSL ist jetzt einsatzbereit, und Sie können zu Ihrer Website navigieren, indem Sie https://localhost
eingeben.
Zusammenfassung
Es ist relativ unkompliziert, SSL mit PowerShell einzurichten. Sie müssen ein Zertifikat abrufen, eine SSL-Bindung in IIS erstellen und dann die IP und den Port der IIS-Bindung verwenden, um eine SSL-Bindung in HTTP.SYS zu erstellen.