TLS unter IIS 10 absichern

Wer einen Web-Server betreibt, sollte darauf achten, dass keine veralteten kryptografischen Protokolle ihr Unwesen treiben. Ein Kandidat hierfür wäre Transport Layer Security (TLS) in den Versionen TLS 1.0 und TLS 1.1. Ich zeige euch, wie beide Versionen für IIS 10 unter Windows Server 2022, 2019 und 2016 deaktiviert werden können.

Diskussion

Transport Layer Security (TLS) ist ein kryptografisches Protokoll zum Verschlüsseln von Nachrichten. TLS ist wesentlicher Bestandteil des Kommunikationsprotokolls Hypertext Transfer Protocol Secure (HTTPS). Die Versionshistorie von TLS sieht wie folgt aus:

Version Veröffentlichung
TLS 1.0 Januar 1999
TLS 1.1 April 2006
TLS 1.2 August 2008
TLS 1.3 August 2018

Die Versionen 1.0 und 1.1 sind also schon ziemlich alt. Ein Entwurf der Internet Engineering Task Force (IETF) fordert sogar, die Unterstützung für beiden TLS-Varianten komplett zu verbieten. Die dort aufgeführten Gründe sind:

  • Beide Protokollversionen erfordern den Einsatz von veralteten Verschlüsselungsverfahren, die als nicht mehr sicher gelten. TLS 1.0 setzt beispielsweise den Einsatz von TLS_DHE_DSS_WITH_3DES_EDE_CBC_SHA als zwingend voraus.

  • Es werden keine aktuellen Verschlüsselungsverfahren unterstützt. Die AEAD-Verschlüsselung wird beispielsweise erst ab Version 1.2 unterstützt.

  • Die Integrität des Handshake-Algorithmus basiert auf einem SHA-1 Hash. Dieser gilt als unsicher.

  • Die Authentifizierung der Gegenseite basiert auf SHA-1 Signaturen. Diese gelten ebenfalls als unsicher.

  • Die Unterstützung von insgesamt vier Protokollversionen erhöht die Wahrscheinlichkeit von Fehlkonfiguration.

  • Einige Programmierbibliotheken haben angekündigt, die Unterstützung für TLS 1.0 und TLS 1.1 einzustellen. Dies hätte zur Folge, dass für die weiter Bereitstellung dieser Protokollversionen keine Updates dieser Bibliotheken mehr möglich wären.

Alle modernen Web-Browser (Chrome, Firefox, Safari, Edge, Opera, etc.) unterstützen mindestens TLS 1.2.

Ein Web-Server sollte daher ausschließlich TLS 1.2 oder höher bereitstellen. Leider sind sowohl unter Windows Server 2016 als auch unter Windows 2019 und 2022 beide Vorgängerversionen standardmäßig aktiviert.

TLS 1.0 und 1.1 deaktivieren

Windows 2022

Im IIS-Manager die HTTPS-Bindung aufrufen und dort die Option Disable Legacy TLS ankreuzen.

Disable Legacy TLS unter Windows 2022

Disable Legacy TLS unter Windows 2022

Windows 2019 und 2016

Die Windows-Registry wie folgt ändern und danach den Server neu starten.

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.0]
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.0\Client]
"Enabled"=dword:00000000

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.0\Server]
"Enabled"=dword:00000000

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.1]
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.1\Client]
"Enabled"=dword:00000000

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.1\Server]
"Enabled"=dword:00000000

Bitte beachte, dass die soeben durchgeführten Änderungen systemweit, also für alle IIS-Webseiten, gelten.

Schwache kryptographische Verfahren deaktivieren

Auch wenn dein IIS jetzt exklusiv mit TLS 1.2 läuft und im Falle von Windows 2022 sogar optional mit TLS 1.3, so müssen wir uns trotzdem noch anschauen, welche kryptographische Verfahren dabei unterstützt werden.

Ein einfacher Test unter auf der Webseite SSL Labs zeigt auf, wie dein TLS konfiguriert ist. Tippe dazu den Hostnamen deiner Webseite ein, die du testen möchtest.

Windows 2022

Ein typisches Ergebnis bei einem frisch installierten Windows Server 2022 sieht wie folgt aus:

Windows 2022 und IIS 10 frisch installiert

Windows 2022 und IIS 10 frisch installiert

Nach Deaktivierung von TLS 1.0 sowie TLS 1.1 sieht das Ergebnis sehr gut aus:

Windows 2022 und IIS 10 abgesichert

Windows 2022 und IIS 10 abgesichert

Windows 2019

Ein typisches Ergebnis bei einem frisch installierten Windows Server 2019 sieht wie folgt aus:

Windows 2019 und IIS 10 frisch installiert

Windows 2019 und IIS 10 frisch installiert

Nach Deaktivierung von TLS 1.0 sowie TLS 1.1 sieht das Ergebnis etwas besser aus:

Windows 2019 und IIS 10 ohne TLS 1.0 und 1.1

Windows 2019 und IIS 10 ohne TLS 1.0 und 1.1

Die verbliebenden als WEAK (zu Deutsch: schwach) gekennzeichneten Einträge wollen wir ebenfalls deaktivieren.

Das Deaktivieren geht am elegantesten per PowerShell (PowerShell-Konsole bitte als Administrator starten) und dem Cmdlt Disable-TlsCipherSuite.

Das folgende Powershell-Skript deaktiviert alle als WEAK gekennzeichneten kryptografischen Verfahren:

Disable-TlsCipherSuite -Name "TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384"
Disable-TlsCipherSuite -Name "TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256"
Disable-TlsCipherSuite -Name "TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA"
Disable-TlsCipherSuite -Name "TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA"
Disable-TlsCipherSuite -Name "TLS_RSA_WITH_AES_256_GCM_SHA384"
Disable-TlsCipherSuite -Name "TLS_RSA_WITH_AES_128_GCM_SHA256"
Disable-TlsCipherSuite -Name "TLS_RSA_WITH_AES_256_CBC_SHA256"
Disable-TlsCipherSuite -Name "TLS_RSA_WITH_AES_128_CBC_SHA256"
Disable-TlsCipherSuite -Name "TLS_RSA_WITH_AES_256_CBC_SHA"
Disable-TlsCipherSuite -Name "TLS_RSA_WITH_AES_128_CBC_SHA"
Disable-TlsCipherSuite -Name "TLS_RSA_WITH_3DES_EDE_CBC_SHA"

Kleiner Tipp: Mit

Get-TlsCipherSuite | Format-Table Name 

kann man sich alle unter Windows 2019 bzw. 2016 aktivierten kryptografischen Verfahren für TLS anzeigen lassen.

Ein abschließender Test unter SSL Labs ergibt nun folgendes Bild:

Windows 2019 und IIS 10 abgesichert

Windows 2019 und IIS 10 abgesichert

Das sieht gut aus. Bitte beachte, dass die soeben durchgeführten Änderungen systemweit, also für alle IIS-Webseiten, gelten.

Windows 2016

Windows 2016 unterscheidet sich von Windows 2019 in einem wichtigen Punkt: Der Verschlüsselungsalgorithmus Rivest Cipher 4 (RC4) ist standardmäßig aktiviert. Dieser gilt seit 2013 als unsicher und sollte seit 2015 in keiner TLS-Implementierung mehr eingesetzt werden (siehe RFC 7465). SSL Labs zeigt RC4 deshalb auch als INSECURE und nicht als WEAK an.

Du musst also auf alle Fälle RC4 unter Windows 2016 deaktivieren:

Disable-TlsCipherSuite -Name "TLS_RSA_WITH_RC4_128_SHA"
Disable-TlsCipherSuite -Name "TLS_RSA_WITH_RC4_128_MD5"

Nachtrag: WebDeploy

Wer noch WebDeploy zum Publizieren von Web-Applikationen unter IIS 10 nutzt, wird schnell feststellen, dass dies nach Abschalten von TLS 1.0 und TLS 1.1 nicht mehr funktioniert. Der Grund: WebDeploy nutzt standardmäßig TLS 1.0. Daher kommt es zum Verbindungsabbruch. Man kann jedoch WebDeploy (genauer gesagt das von WebDeploy genutzte .NET-Framework) auf TLS 1.2 umstellen.

Vorgehensweise: Die Windows-Registry auf dem Rechner, der WebDeploy ausführen möchte, wie folgt ändern.

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\v4.0.30319]
"SchUseStrongCrypto"=dword:00000001

[HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\.NETFramework\v4.0.30319]
"SchUseStrongCrypto"=dword:00000001   

Anmerkungen

Cloud-basierte Dienste müssen einem ständigen Sicherheits-Monitoring unterliegen, da sich Standards stets weiterentwickeln.

IIS unterstützt beispielsweise ab Windows Server 2022 auch TLS 1.3. Ab Windows Server 2025 werden die TLS-Versionen 1.0 und 1.1 gar nicht mehr angeboten, das ganze Gedöns von oben erübrigt sich also hier.

Artikelhistorie

  • 30.10.2019
    • Erstveröffentlichung
  • 25.09.2025
    • Update für Windows Server 2022
    • Anmerkung zu Windows Server 2025
Das könnte dich auch interessieren:
  1. Windows 11 ohne TPM und SecureBoot
  2. Remote-Administration mit IIS-Manager
  3. BitLocker unter Windows 10
  4. FTP/FTPS unter IIS 10
  5. Wer hat an der Uhr gedreht?
Teile diesen Artikel