Oleksii - stock.adobe.com

So konfiguriert man SSL für IIS-Websites mit PowerShell

SSL-Verschlüsselung ist beim Aufbau einer IIS-Website unbedingt notwendig. Das PowerShell-Tutorial präsentiert Methoden, um den Bereitstellungsprozess zu optimieren.

Die Erstellung einer IIS-Website ist relativ einfach. Die Dinge können allerdings kompliziert werden, wenn man ein Zertifikat zur Verschlüsselung des Datenverkehrs zwischen Clients und Servern einrichtet.

Secure Sockets Layer (SSL) ist das de-facto Standard-Protokoll, das zur sicheren Kommunikation zwischen einem Webbrowser und einem Server verwendet wird. Um die verschlüsselte Verbindung zwischen Maschinen einzurichten, müssen Sie ein SSL-Zertifikat über die Internet Information Services (IIS) einbinden. Per PowerShell lässt sich der Konfigurationsprozess vereinfachen.

Erste Schritte mit IIS-Websites

Dieses Tutorial basiert auf der Verwendung von Internet Information Services (IIS) 10.0 auf Windows Server 2016. Wir nutzen Cmdlets aus dem Modul WebAdministration, das standardmäßig mit IIS installiert wird. Die Befehle funktionieren jedoch auch in früheren Versionen von IIS und Windows Server.

Überprüfen Sie zunächst, ob IIS auf dem Server vorhanden sind. Verbinden Sie sich dann mit dem Windows Server 2016 Computer per PowerShell Remoting.

Enter-PSSession -ComputerName MYIISSERVER

Mit dem Befehl Get-Website können Sie überprüfen, ob es bereits vorhandene Websites gibt. So stellen Sie sicher, dass Sie vorhandene Websites später auflisten können. Das folgende Beispiel zeigt eine Website mit dem Namen Default Web Site. Sie ist an alle durch das Sternchen gekennzeichneten IP-Adressen gebunden und überwacht Port 80.

Get-Website
Name                 ID   State      Physical Path        Bindings
----                 --   -----      -------------        --------
Default Web Site     1    Stopped    %SystemDrive%\inetpub\wwwroot  http *:80:

Es ist hilfreich, diese Bestätigung zu erhalten, damit Sie die vorhandenen Websites auf dem Server problemlos finden können.

Als nächstes erstellen Sie eine Website namens DemoSite mit dem -Website-Befehl. Nachfolgend finden Sie ein einfaches Beispiel für einen Befehl mit nur dem Namen der Website und dem Dateisystempfad:

-Website -Name DemoSite -PhysicalPath C:\inetpub\wwwroot\

Name       ID   State      Physical Path        Bindings
----       --   -----      -------------        --------
DemoSite   3    Stopped    C:\inetpub\wwwroot\   http *:80:

Wenn Sie andere Konfigurationsaufgaben durchführen müssen, lesen Sie den Hilfeabschnitt für den -Website-Befehl, indem Sie Get-Help -Website ausführen.

Wie man Bindungen einstellt und verwaltet

Die DemoSite-Website ist an alle IP-Adressen gebunden und überwacht standardmäßig Port 80. Um das HTTPS-Protokoll zu unterstützen, müssen Sie die Website zwingen, Port 443 zu überwachen. Dafür fügen Sie eine Bindung hinzu.

Führen Sie zunächst den folgenden Befehl aus, um eine Liste der Bindungen auf dem Server zu erhalten:

Get-WebBinding
protocol   bindingInformation    sslFlags
--------   ------------------    --------
http       *:80:                0
http       *:80:                0

Dieser Befehl zeigt alle Bindungen auf Servern für alle Websites an. Um Bindungen auf einer bestimmten Website zurückzugeben, führen Sie Get-Website aus und rufen Sie die Eigenschaft Collection des Bindungsobjekts auf.

Get-Website -Name 'DemoSite').bindings.Collection

protocol   bindingInformation    sslFlags
--------   ------------------    --------
http       *:80:                0

Fügen Sie der DemoSite mit dem Befehl -WebBinding eine Bindung für Port 443 hinzu. Geben Sie auf -WebBinding den Namen der Website als Name-Parameter an. Anschließend geben Sie die IP-Adresse für die Bindung ein und den Port zur Überwachung.

-WebBinding -Name 'DemoSite' -IPAddress * -Port 443 -Protocol https

(Get-Website -Name 'DemoSite').bindings.Collection

protocol   bindingInformation    sslFlags
--------   ------------------    --------
http       *:80:                0
https      *:443:               0

Hinzufügen eines selbstsignierten Zertifikats für SSL auf IIS

Die Informationen zu den Bindungen zeigen an, dass die Website den standardmäßigen HTTPS-Port 443 überwacht. Um die Verschlüsselung einzurichten, müssen Sie ein Zertifikat für SSL in den IIS installieren und die Bindung zwingen, dieses Zertifikat zu verwenden.

Erstellen Sie mit dem Befehl -SelfSignedCertificate ein selbstsigniertes Zertifikat auf dem Server. Geben Sie den Ordner für den Speicherort des Zertifikats und den Namen des Domain Name System (DNS) an. Das folgende Beispiel verwendet die Domain demo.local:

-SelfSignedCertificate -CertStoreLocation 'Cert:\LocalMachine\My' -DnsName 'demosite.demo.local'

PSParentPath: Microsoft.PowerShell.Security\Certificate::LocalMachine\My

Thumbprint                                Subject
----------                                -------
1D462AF7573BDC51F42FF8B2AD8930DC761D849B  CN=demosite.demo.local

Bindung des SSL-Zertifikats

Als nächstes binden Sie das Zertifikat an die Website, indem Sie den Pfad zum Zertifikatsspeicher mit Thumbprint definieren.

$certPath = 'Cert:\LocalMachine\My\1D462AF7573BDC51F42FF8B2AD8930DC761D849B'
$providerPath = 'IIS:\SSLBindings\0.0.0.0!443'
Get-Item $certPath | -Item $providerPath

IP Address      Port Host Name       Store           Sites
----------      ---- ---------       -----           -----
0.0.0.0         443                  My              DemoSite

Um zu bestätigen, dass sich das Zertifikat auf der HTTPS-Bindung der Website befindet, rufen Sie den Internet Information Services Manager auf, klicken auf DemoSite, öffnen Bindung, wählen die HTTPS-Bindung und überprüfen den DNS-Namen des Zertifikats.

Abbildung 1: Bestätigen Sie im Internet Information Services Manager die Zertifikatsbindung für die Website.
Abbildung 1: Bestätigen Sie im Internet Information Services Manager die Zertifikatsbindung für die Website.

Sie können auch einen Schritt weiter gehen und eine Funktion zum Hinzufügen von SSL auf IIS-Websites entwickeln. Wenn Sie routinemäßig Websites erstellen müssen, können Sie damit alle Funktionen unterbringen, die SSL-Verschlüsselung erfordern.

Erfahren Sie mehr über Softwareentwicklung