Einrichtung von SSL auf IIS 7

von Saad Ladki

Einführung

Die Schritte zum Konfigurieren von Secure Sockets Layer (SSL) für eine Website sind in IIS 7 und höher und IIS 6.0 identisch und umfassen Folgendes:

  • Rufen Sie ein entsprechendes Zertifikat ab.
  • Erstellen Sie eine HTTPS-Bindung auf einer Website.
  • Testen Sie, indem Sie eine Anforderung an die Website vornehmen.
  • Konfigurieren Sie optional SSL-Optionen, das heißt, indem Sie SSL als Anforderung festlegen.

Dieses Dokument enthält einige grundlegende Informationen zu SSL und zeigt dann, wie SSL auf folgende Weise aktiviert wird:

  • Verwenden des IIS-Managers.
  • Verwenden sie das Befehlszeilentool AppCmd.exe.
  • Programmgesteuert über Microsoft.Web.Administration.
  • Verwenden von WMI-Skripts.

Dieser Artikel enthält folgende Abschnitte:

SSL-Konfiguration

Ganz gleich, ob Sie Ihre Website auf Ihrem eigenen Server oder in der Cloud ausführen, indem Sie SSL verwenden, um Ihre Website zu sichern, ist wahrscheinlich äußerst wichtig für Sie, da viele Websites darauf umdrehen, um die Privatsphäre des Benutzers zu schützen. Wenn Sie SSL auf Ihrem Server konfigurieren müssen, ist es wichtig zu erkennen, dass die Implementierung von SSL von IIS 6.0 zu IIS 7 und höher geändert wurde. In IIS 6.0 unter Windows Server 2003 wurde alle SSL-Konfiguration in der IIS-Metabasis gespeichert, und die Verschlüsselung/Entschlüsselung ist im Benutzermodus aufgetreten (erfordert viele Kernel-/Benutzermodusübergänge). In IIS 7 und höher behandelt HTTP.sys SSL-Verschlüsselung/Entschlüsselung im Kernelmodus, was zu bis zu 20 % besserer Leistung für sichere Verbindungen in IIS 7 und höher führt als dies in IIS 6.0.

Die Verwendung von SSL im Kernelmodus erfordert das Speichern von SSL-Bindungsinformationen an zwei Stellen. Zuerst wird die Bindung in %windir%\System32\inetsrv\config\applicationHost.config für Ihre Website gespeichert. Wenn die Website gestartet wird, sendet IIS die Bindung an HTTP.sys, und HTTP.sys startet die Überwachung von Anforderungen an die angegebene IP:Port (dies funktioniert für alle Bindungen). Zweitens wird die SSL-Konfiguration, die der Bindung zugeordnet ist, in der HTTP.sys Konfiguration gespeichert. Verwenden Sie den Netsh-Befehl an einer Eingabeaufforderung, um die in HTTP.sys gespeicherte SSL-Bindungskonfiguration wie im folgenden Beispiel anzuzeigen:

netsh http show sslcert

Wenn ein Client eine SSL-Aushandlung herstellt und initiiert, sucht HTTP.sys in seiner SSL-Konfiguration für das IP:Port-Paar, mit dem der Client verbunden ist. Die HTTP.sys SSL-Konfiguration muss einen Zertifikathash und den Namen des Zertifikatspeichers enthalten, bevor die SSL-Aushandlung erfolgreich verläuft.

Tipp zur Problembehandlung: Wenn Probleme mit einer SSL-Bindung auftreten, überprüfen Sie, ob die Bindung in ApplicationHost.config konfiguriert ist und dass der HTTP.sys Store einen gültigen Zertifikathash und speichernamen für die Bindung enthält.

Auswählen eines Zertifikats

Berücksichtigen Sie beim Auswählen eines Zertifikats Folgendes: Möchten Endbenutzer die Identität Ihres Servers mit Ihrem Zertifikat überprüfen? Wenn ja, erstellen Sie entweder eine Zertifikatanforderung, und senden Sie diese Anforderung an eine bekannte Zertifizierungsstelle (Zertifizierungsstelle), z. B. VeriSign oder GeoTrust, oder rufen Sie ein Zertifikat von einer Onlinezertifizierungsstelle in Ihrer Intranetdomäne ab. Es gibt drei Dinge, die ein Browser in der Regel in einem Serverzertifikat überprüft:

  1. Das aktuelle Datum und die aktuelle Uhrzeit entsprechen den Datumsbereichen „Gültig ab“ und „Gültig bis“ im Zertifikat.
  2. Der allgemeine Name (Common Name, CN) des Zertifikats entspricht dem Hostheader in der Anforderung. Wenn der Client eine Anforderung beispielsweise an https://www.contoso.com/ richtet, muss der CN www.contoso.com lauten.
  3. Dass der Aussteller des Zertifikats eine bekannte und vertrauenswürdige Zertifizierungsstelle ist.

Wenn mindestens eine dieser Prüfungen fehlschlägt, fordert der Browser den Benutzer mit Warnungen auf. Wenn Sie über eine Internetwebsite oder eine Intranetwebsite verfügen, auf der Ihre Endbenutzer keine Personen sind, die Sie persönlich kennen, sollten Sie immer sicherstellen, dass diese drei Parameter gültig sind.

Selbstsignierte Zertifikate sind Zertifikate, die auf Ihrem Computer erstellt werden. Sie sind nützlich in Umgebungen, in denen es für einen Endbenutzer nicht wichtig ist, Ihrem Server zu vertrauen, z. B. einer Testumgebung.

Verwenden von AppCmd

Sie können ein Zertifikat nicht anfordern oder erstellen, indem Sie AppCmd.exe verwenden. Sie können auch keine AppCmd.exe verwenden, um eine SSL-Bindung zu erstellen.

Konfigurieren von SSL-Einstellungen

Sie können AppCmd.exe verwenden, um eine Website so zu konfigurieren, dass nur Server-HTTPS-Verbindungen akzeptiert werden, indem Sie das SslFlags-Attribut im Access-Abschnitt ändern. Sie können diese Einstellung beispielsweise für die "Standardwebsite" in der datei ApplicationHost.config (z. B. commitPath:APPHOST) mithilfe des folgenden Befehls konfigurieren:

%windir%\system32\inetsrv>AppCmd set config "Default Web Site" -commitPath:APPHOST -section:access -sslFlags:Ssl

Bei erfolgreicher Ausführung wird die folgende Meldung angezeigt:

Applied configuration changes to section "system.webServer/security/access" for "MACHINE/WEBROOT/APPHOST/Default Web Site" at configuration commit path "MACHINE/WEBROOT/APPHOST"

Hinweis

Wenn Sie 128-Bit-SSL benötigen möchten, ändern Sie den sslFlags-Wert in Ssl128.

Im folgenden Beispiel wird veranschaulicht, wie sie die <Zugriffs-/> Abschnittseinstellungen für die Standardwebsite anzeigen. Das sslFlags-Attribut wurde erfolgreich festgelegt.

%windir%\system32\inetsrv>AppCmd list config "Default Web Site" -section:access

Das Ausführen des Befehls führt zum folgenden Eintrag in der datei ApplicationHost.config:

<system.webServer>
  <security>
    <access flags="Script, Read" sslFlags="Ssl" />
  </security>
</system.webServer>

Verwenden von WMI

Sie können ein Zertifikat nicht anfordern oder erstellen, indem Sie den WMI-Namespace der WebAdministration verwenden.

Erstellen einer SSL-Bindung

Das folgende Skript veranschaulicht das Erstellen einer neuen SSL-Bindung und das Hinzufügen der entsprechenden Konfiguration für HTTP.sys und IIS:

Set oIIS = GetObject("winmgmts:root\WebAdministration")
'''''''''''''''''''''''''''''''''''''''''''''
' CREATE SSL BINDING
'''''''''''''''''''''''''''''''''''''''''''''

oIIS.Get("SSLBinding").Create _ 
   "*", 443, "4dc67e0ca1d9ac7dd4efb3daaeb15d708c9184f8", "MY"
'''''''''''''''''''''''''''''''''''''''''''''
' ADD SSL BINDING TO SITE
'''''''''''''''''''''''''''''''''''''''''''''

Set oBinding = oIIS.Get("BindingElement").SpawnInstance_
oBinding.BindingInformation = "*:443:"
oBinding.Protocol = "https"

Set oSite = oIIS.Get("Site.Name='Default Web Site'")
arrBindings = oSite.Bindings

ReDim Preserve arrBindings(UBound(arrBindings) + 1)
Set arrBindings(UBound(arrBindings)) = oBinding

oSite.Bindings = arrBindings
Set oPath = oSite.Put_

Hinweis

Der Zertifikathash und -speicher muss auf ein echtes, funktionales Zertifikat auf Ihrem Server verweisen. Wenn der Zertifikathash und/oder der Speichername falsch sind, wird ein Fehler zurückgegeben.

Konfigurieren von SSL-Einstellungen

Das folgende Skript veranschaulicht, wie SSL-Einstellungen mithilfe des IIS-WMI-Anbieters festgelegt werden. Sie finden diesen Wert in der IIS_Schema.xml Datei.

CONST SSL = 8  
Set oIIS = GetObject("winmgmts:root\WebAdministration")  
Set oSection = oIIS.Get(\_  
 "AccessSection.Path='MACHINE/WEBROOT/APPHOST',Location='Default Web Site'")  
oSection.SslFlags = oSection.SslFlags OR SSL  
oSection.Put\_ <a id="IISManager"></a>

IIS-Manager

Abrufen eines Zertifikats

Wählen Sie den Serverknoten in der Strukturansicht aus, und doppelklicken Sie in der Listenansicht auf das Feature "Serverzertifikate ":
Screenshot des ausgewählten ALEXIS E 3 L H-Serverknotens Home mit ausgewählten Serverzertifikaten.

Klicken Sie im Bereich "Aktionen" auf "Self-Signed Zertifikat erstellen".
Screenshot des Bereichs

Geben Sie einen Anzeigenamen für das neue Zertifikat ein, und klicken Sie auf 'OK'.

Jetzt verfügen Sie über ein selbstsigniertes Zertifikat. Das Zertifikat ist für die Verwendung der Serverauthentifizierung gekennzeichnet; das heißt, es wird als serverseitiges Zertifikat für DIE HTTP-SSL-Verschlüsselung und für die Authentifizierung der Identität des Servers verwendet.

Erstellen einer SSL-Bindung

Wählen Sie eine Website in der Strukturansicht aus, und klicken Sie im Bereich "Aktionen" auf "Bindungen". Dadurch wird der Bindungen-Editor angezeigt, mit dem Sie Bindungen für Ihre Website erstellen, bearbeiten und löschen können. Klicken Sie auf "Hinzufügen... ", um Ihre neue SSL-Bindung zur Website hinzuzufügen.

Screenshot des Dialogfelds

Die Standardeinstellungen für eine neue Bindung werden auf HTTP auf Port 80 festgelegt. Wählen Sie "https" in der Dropdownliste "Typ " aus. Wählen Sie das selbstsignierte Zertifikat aus der Dropdownliste " SSL-Zertifikat " aus, das Sie im vorherigen Abschnitt erstellt haben, und klicken Sie dann auf "OK".

Screenshot des Dialogfelds

Jetzt haben Sie eine neue SSL-Bindung auf Ihrer Website, und alles, was weiterhin besteht darin, zu überprüfen, ob es funktioniert.
Screenshot des Dialogfelds

Überprüfen der SSL-Bindung

Klicken Sie im Bereich "Aktionen" unter "Website durchsuchen" auf den Link, der der gerade erstellten Bindung zugeordnet ist.
Screenshot des Abschnitts

Internet Explorer (IE) 7 und höher zeigt eine Fehlerseite an, da das selbstsignierte Zertifikat von Ihrem Computer ausgestellt wurde, nicht von einer vertrauenswürdigen Zertifizierungsstelle (Ca). IE 7 und höher vertrauen dem Zertifikat, wenn Sie es zur Liste der vertrauenswürdigen Stammzertifizierungsstellen im Zertifikatspeicher auf dem lokalen Computer oder in Gruppenrichtlinie für die Domäne hinzufügen. Klicken Sie auf Laden dieser Website fortsetzen (nicht empfohlen).
Screenshot von Internet Explorer, der einen Sicherheitszertifikatfehler anzeigt. Weiter zu dieser Website (nicht empfohlen) wird hervorgehoben.

Konfigurieren von SSL-Einstellungen

Konfigurieren Sie SSL-Einstellungen, wenn Ihre Website SSL erfordert oder auf bestimmte Weise mit Clientzertifikaten interagieren soll. Klicken Sie in der Strukturansicht auf den Websiteknoten, um zur Startseite der Website zurückzukehren. Doppelklicken Sie im mittleren Bereich auf das FEATURE "SSL-Einstellungen ".

Screenshot des Bereichs

Zusammenfassung

In dieser exemplarischen Vorgehensweise haben wir das Befehlszeilentool AppCmd.exe, den Skriptanbieter WMI und DEN IIS-Manager zum Einrichten von SSL in IIS erfolgreich verwendet.