Heutzutage wird HTTPS immer wichtiger und ist quasi zum Standard geworden. In dieser Anleitung zeige ich daher, wie sich HTTPS für den IIS (Internet Information Services) konfigurieren lässt. Ich gehe dabei auf die Konfiguration mit einem selbstsignierten Zertifikat und die Konfiguration mit einem SAN-Domänenzertifikat ein.
Inhaltsverzeichnis
Zertifikat erstellen
In diesem Artikel zeige ich zwei verschieden Möglichkeiten ein Zertifikat zu erstellen. Du kannst direkt zu dem für dich passenden Abschnitt springen:
Selbstsigniertes Zertifikat erstellen
In diesem Abschnitt zeige ich, wie sich ein selbstsigniertes Zertifikat (nicht empfohlen) erstellen lässt. Wenn du ein SAN-Domänenzertifikat erstellen möchtest, springe direkt zum nächsten Abschnitt.
Im IIS-Manager muss auf der linken Seite auf den Server und anschließend doppelt auf "Serverzertifikate" geklickt werden:

Auf der rechten Seite befindet sich nun der entsprechende Punkt "Selbstsigniertes Zertifikat erstellen...":

Ein Klick darauf öffnet einen Dialog. Es ist zuerst ein Anzeigename und der Zertifikatspeicher anzugeben. Als Anzeigename verwende ich den Namen, unter dem die Website später aufgerufen werden soll. In meinem Beispiel etwa "WEBSRV01". Als Zertifikatspeicher wähle ich "Webhosting":

Das Zertifikat ist jetzt erstellt und wird im IIS-Manager entsprechend angezeigt:

Im nächsten Schritt ist die Bindung zu konfigurieren.
SAN-Domänenzertifikat über CA erstellen
Dieser Weg setzt voraus, dass es eine Active Directory mit funktionsfähiger CA gibt. Wenn dies der Fall ist, ist auf dem Server die MMC und das Snap-In für Computerzertifikate zu öffnen. Unter "Eigene Zertifikate" kann nun eine benutzerdefinierte Anforderung erstellt werden:

Nach einem Klick auf "Weiter" ist "Den Vorgang ohne Registrierungsrichtlinie fortsetzen" auszuwählen und auf "Weiter" zu klicken:

Die Einstellungen bezüglich der Vorlage und des Anforderungsformats im nächsten Schritt belasse ich im Standard und klicke auf "Weiter". Im nächsten Fenster muss der Reiter "Benutzerdefinierte Anforderung" aufgeklappt und auf "Eigenschaften" geklickt werden:

Es öffnet sich ein weiterer Dialog, in dem ein beliebiger Anzeigename angegeben werden muss. Ich wähle den Namen des Servers "websrv01":

Im Reiter "Antragsteller" können schließlich der CN und die alternativen DNS-Namen oder IP-Adressen angegeben werden, für die das Zertifikat gültig sein soll:

In den übrigen Reitern können noch Erweiterungen ausgewählt oder Einstellungen zum privaten Schlüssel gemacht werden. Ich wähle hier noch aus, dass der private Schlüssel 2048 Bit lang sein soll. Bei Bedarf kann auch noch die Option "Privaten Schlüssel exportierbar machen" aktiviert werden.

Nach einem Klick auf "OK" und "Weiter" ist noch der Dateiname anzugeben. Das Dateiformat belasse ich auf "Base 64":

Nach einem Klick auf "Fertig stellen" wird der CSR schließlich erstellt. Die Datei lässt sich mit einem Texteditor öffnen und hat das folgende Format:
-----BEGIN NEW CERTIFICATE REQUEST-----
XYZ
-----END NEW CERTIFICATE REQUEST-----
Der gesamte Inhalt der Datei ist schließlich zu kopieren und in den Active Directory Zertifikatsdiensten anzugeben. In den Active Directory Zertifikatsdiensten ist dazu eine erweiterte Zertifikatanforderung einzusenden und als Zertifikatsvorlage "Webserver" auszuwählen:

Das Zertifikat (*.cer) kann in DER-codiert heruntergeladen und auf den Server übertragen werden.
Zurück in der MMC kann das Zertifikat jetzt importiert werden:

Als Speicherort beim Importvorgang muss natürlich "Lokaler Computer" und nicht "Aktueller Benutzer" ausgewählt sein. Die Einstellungen können im Standard belassen werden.
Das Zertifikat ist nun im Zertifikatspeicher von Windows hinterlegt und kann später im IIS ausgewählt werden:

Bindungen im IIS konfigurieren
Im IIS können jetzt die Bindungen konfiguriert werden. Die Bindungen geben an, auf welche Ports und unter welchen DNS-Namen oder IP-Adressen der IIS erreichbar sein soll. Es ist dafür mit der rechten Maustaste auf die entsprechende Site und auf "Bindungen bearbeiten..." zu klicken:

Eine Zeile für HTTP Port 80 sollte bereits vorhanden sein. Ich erstelle eine zweite Bindung per Klick auf "Hinzufügen...":

Als Typ ist "https" anzugeben. Den Port belasse ich im Standard. Unten ist schließlich noch das SSL-Zertifikat auszuwählen, was wir im Schritt zuvor erstellt. IP-Adresse und Hostname lasse ich frei, da der IIS auf alle Anfragen zu diesem Port reagieren soll.
An dieser Stelle lässt sich der IIS bereits per HTTP und HTTPS aufrufen. Wenn ein selbstsigniertes Zertifikat verwendet wird, ist hier natürlich mit einem Zertifikatsfehler zu rechnen. In meinem Fall erscheint eine 403-Fehlermeldung, die aber ignoriert werden kann. Die liegt in meinem Beispiel lediglich daran, dass meine Site keinen Inhalt enthält.

An dieser Stelle lässt sich die Site bereits über HTTPS aufrufen. Eine Weiterleitung von HTTP auf HTTPS findet jedoch noch nicht statt. Das schauen wir uns im nächsten Abschnitt an.
Automatische Weiterleitung von HTTP auf HTTPS
Für die automatische Weiterleitung von HTTP auf HTTPS ist ein Zusatzmodul für den IIS erforderlich, welches installiert und konfiguriert werden muss.
Installation von URL Rewrite
Wenn der IIS später HTTP-Anfragen automatisch auf HTTPS umleiten soll, muss das Zusatzpaket URL Rewrite installiert werden.
Ich verwende diesen Downloadlink, weil dieser auch ohne den Microsoft Web Platform Installer funktioniert, dessen Support dieses Jahr endet:
Bei der Installation des Moduls ist nichts zu beachten. Der Installer kann einfach durchgeklickt werden.
Konfiguration der URL Rewrite Regel
Um eine Regel für die Weiterleitung zu konfigurieren, ist in der linken Hälfte auf die entsprechende Site (nicht auf den Eintrag für den Server) und anschließend doppelt auf "URL Rewrite" zu klicken:

Auf der rechten Seite befindet sich jetzt die Option "Regel(n) hinzufügen...":

Erstellen wir jetzt die erste Regel, die die Weiterleitung von HTTP auf HTTPS vornimmt. Nach einem Klick auf "Regel(n) hinzufügen...", ist eine leere Regel zu erstellen:

Zunächst vergebe ich einen aussagekräftigen Namen wie "HTTP zu HTTPS" und gebe das Muster (.*) an. (.*) trifft hierbei auf alle möglichen Anfragen zu.

Weiter unten muss noch eine Bedingung und eine Aktion angegeben werden. Die Bedingung soll aussagen "Wenn HTTPS deaktiviert ist...". Die Aktion sagt aus, dass die angefragte Adresse auf HTTPS umgeleitet wird.
Bedingung
Eingabe: {HTTPS}
Muster: ^OFF$
Aktion
Aktionstyp: Umleiten
URL umleiten: https://{HTTP_HOST}{REQUEST_URI}

Nach einem Klick auf "Übernehmen" oben rechts sollte die automatische Weiterleitung von HTTP und HTTPS bereits funktionieren. Wenn nicht, versuche einmal den Test in einem privaten Browserfenster zu wiederholen.