Freigeben über


PowerShell-Snap-In: Konfigurieren von SSL mit dem IIS PowerShell-Snap-In

vom IIS-Team

Um SSL zu aktivieren, sind drei Schritte erforderlich:

  1. Abrufen und Installieren eines Zertifikats
  2. Erstellen einer SSL-Bindung in IIS
  3. 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.

  1. In HTTP.SYS müssen Sie 0.0.0.0 verwenden, um alle IP-Adressen anzugeben; in IIS verwenden Sie ein Sternchen (*).
  2. 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.