Einrichten von SSL unter IIS 7 oder höher

von Saad Ladki

Einführung

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

  • Rufen Sie ein geeignetes Zertifikat ab.
  • Erstellen Sie eine HTTPS-Bindung auf einer Website.
  • Testen Sie sie, indem Sie eine Anforderung an die Website stellen.
  • Konfigurieren Sie optional SSL-Optionen, und zwar indem Sie SSL als Anforderung festlegen.

Dieses Dokument enthält einige grundlegende Informationen zu SSL und zeigt dann, wie SSL aktiviert werden kann:

  • Verwenden von IIS-Manager.
  • Verwenden des Befehlszeilentools „AppCmd.exe“.
  • Programmgesteuert über Microsoft.Web.Administration.
  • Verwenden von WMI-Skripts.

Dieser Artikel enthält folgende Abschnitte:

SSL-Konfiguration

Unabhängig davon, ob Sie Ihre Website auf Ihrem eigenen Server oder in der Cloudausführen, ist die Verwendung von SSL zum Sichern Ihrer Website für Sie wahrscheinlich äußerst wichtig, da viele Websites darauf zurückgreifen, um die Privatsphäre der Benutzer 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 wurden alle SSL-Konfigurationen in der IIS-Metabase gespeichert, und die Verschlüsselung/Entschlüsselung ist im Benutzermodus aufgetreten (erfordert viele Kernel-/Benutzermodusübergänge). In IIS 7 und höher verarbeitet HTTP.sys die SSL-Verschlüsselung/Entschlüsselung im Kernelmodus, wodurch eine bis zu 20 % bessere Leistung für sichere Verbindungen in IIS 7 und höher erreicht wird als bei IIS 6.0.

Die Verwendung von SSL im Kernelmodus erfordert das Speichern von SSL-Bindungsinformationen an zwei Stellen. Zunächst 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 beginnt mit der Überwachung von Anforderungen an den angegebenen 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 Befehl netsh in einer Eingabeaufforderung, um die in HTTP.sys gespeicherte SSL-Bindungskonfiguration wie im folgenden Beispiel anzuzeigen:

netsh http show sslcert

Wenn ein Client eine Verbindung herstellt und eine SSL-Verhandlung einleitet, sucht HTTP.sys in seiner SSL-Konfiguration nach dem IP:Port-Paar, mit dem sich der Client verbunden hat. Die SSL-Konfiguration von HTTP.sys muss einen Zertifikatshash und den Namen des Zertifikatspeichers enthalten, damit die SSL-Verhandlung erfolgreich ist.

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-Speicher einen gültigen Zertifikathash und Speichernamen für die Bindung enthält.

Auswählen eines Zertifikats

Berücksichtigen Sie bei der Auswahl eines Zertifikats Folgendes: Sollen Endbenutzer die Identität Ihres Servers mit Ihrem Zertifikat überprüfen können? Wenn ja, erstellen Sie entweder eine Zertifikatanforderung, und senden Sie diese Anforderung an eine bekannte Zertifizierungsstelle (ZS), 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. Der Aussteller des Zertifikats ist eine bekannte und vertrauenswürdige ZS.

Wenn mindestens eine dieser Prüfungen fehlschlägt, erhält der Benutzer Warnungen vom Browser. Wenn Sie über eine Internetwebsite oder eine Intranetwebsite verfügen, auf der Ihre Endbenutzer Personen sind, die Sie nicht 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 in Umgebungen nützlich, in denen es für einen Endbenutzer nicht wichtig ist, Ihrem Server zu vertrauen, z. B. einer Testumgebung.

Verwenden von AppCmd

Sie können mit AppCmd.exe kein Zertifikat anfordern oder erstellen. Sie können mit AppCmd.exe auch keine SSL-Bindung erstellen.

Konfigurieren von SSL-Einstellungen

Sie können AppCmd.exe verwenden, um eine Website so zu konfigurieren, dass nur HTTPS-Serververbindungen akzeptiert werden, indem Sie das Attribut sslFlags im Abschnitt „Zugriff“ ä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

Ändern Sie den sslFlags-Wert in Ssl128, um 128-Bit-SSL zu fordern.

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

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

Wenn Sie den Befehl ausführen, wird der folgende Eintrag in der Datei „ApplicationHost.config“ angezeigt:

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

Verwenden von WMI

Sie können mit dem WebAdministration-WMI-Namespace kein Zertifikat anfordern oder erstellen.

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 müssen auf ein echtes, funktionales Zertifikat auf Ihrem Server verweisen. Wenn der Zertifikathash und/oder 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 die Funktion Serverzertifikate:
Screenshot of the ALEXIS E 3 L H server node Home with Server Certificates selected.

Klicken Sie auf Selbstsigniertes Zertifikat erstellen im Bereich Aktionen.
Screenshot of the Server Certificates Actions pane with Create SelfSigned Certificate emphasized.

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

Jetzt verfügen Sie über ein selbstsigniertes Zertifikat. Das Zertifikat ist für die Verwendung der Serverauthentifizierung gekennzeichnet; d. h. 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 in der Strukturansicht eine Website aus, und klicken Sie auf Bindungen im Bereich Aktionen. Dadurch wird der Bindungs-Editor angezeigt, mit dem Sie Bindungen für Ihre Website erstellen, bearbeiten und löschen können. Klicken Sie auf Hinzufügen..., um die neue SSL-Bindung zur Website hinzuzufügen.

Screenshot of the Site Bindings dialog with one the default site binding.

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

Screenshot of the Add Site Binding dialog with Type set to H T T P S and S S L certificate set to Test certificate.

Jetzt verfügen Sie über eine neue SSL-Bindung auf Ihrer Website, und Sie müssen nur noch sicherzustellen, dass sie funktioniert.
Screenshot of the Site Binding dialog with both the H T T P and H T T P S bindings.

Überprüfen der SSL-Bindung

Klicken Sie im Bereich „Aktionen“ unter „Website durchsuchen“ auf den Link, der der soeben erstellten Bindung zugeordnet ist.
Screenshot of the Browse Web Site section of the Actions pane with Browse asterisk colon 443 or H T T P S emphasized.

Internet Explorer (IE) 7 und höher zeigen eine Fehlerseite an, da das selbstsignierte Zertifikat von Ihrem Computer ausgestellt wurde, nicht von einer vertrauenswürdigen Zertifizierungsstelle (ZS). IE 7 und höher vertraut dem Zertifikat, wenn Sie es der Liste der vertrauenswürdigen Stammzertifizierungsstellen im Zertifikatspeicher auf dem lokalen Computer oder in der Gruppenrichtlinie für die Domäne hinzufügen. Klicken Sie auf Laden dieser Website fortsetzen (nicht empfohlen).
Screenshot of internet explorer displaying a security certificate error. Continue to this website (not recommended) is emphasized.

Konfigurieren von SSL-Einstellungen

Konfigurieren Sie SSL-Einstellungen, wenn Ihre Website SSL erfordert oder auf eine 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 die Funktion SSL-Einstellungen.

Screenshot of the S S L Settings pane requiring S S L and ignoring Client certificates.

Zusammenfassung

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