TLS und Zertifikate für IIS konfigurieren

Schritt-für-Schritt-Anleitung: TLS-Protokolle, Cipher Suites, HTTPS-Redirect und Zertifikatsbindung in IIS — mit IIS Crypto Tool und PowerShell.

IIS · Schritt für Schritt

TLS und Zertifikate in IIS

TLS-Konfiguration ist die Grundlage jeder sicheren Website. Mit 4 von 166 Punkten im Wolf-Agents Web Security Check prüft der Scanner TLS-Version, Cipher Suites und Zertifikatgueltigkeit. In IIS erfolgt die TLS-Konfiguration über Windows Schannel — nicht in der web.config.

Das IIS Crypto Tool (von Nartac Software) ist die empfohlene Methode: Ein Klick auf "Best Practices" deaktiviert unsichere Protokolle und Cipher Suites. Alternativ konfigurieren Sie alles per PowerShell und Registry-Eintraegen — ideal für Windows Server Core und automatisierte Deployments.

Wichtig: TLS-Änderungen erfordern immer einen vollständigen Server-Neustart. Ein iisreset reicht nicht aus, da Schannel auf Betriebssystemebene arbeitet. Planen Sie ein Wartungsfenster ein.

1 Schritt 1 von 5

TLS-Protokolle mit IIS Crypto oder PowerShell

Deaktivieren Sie TLS 1.0 und 1.1 — nur TLS 1.2 und 1.3 sind sicher. IIS Crypto ist die einfachste Methode mit GUI. Für Server Core oder automatisierte Deployments nutzen Sie PowerShell. Das Script deaktiviert beide Client- und Server-Seite der Protokolle.

IIS Crypto Empfohlen
# IIS Crypto (Nartac Software) — empfohlene Methode
# Download: https://www.nartac.com/Products/IISCrypto
#
# 1. IIS Crypto starten
# 2. "Best Practices" Button klicken
# 3. "Apply" → Server-Neustart
#
# Best Practices deaktiviert:
# - SSL 2.0, SSL 3.0, TLS 1.0, TLS 1.1
# - RC4, DES, 3DES, MD5, NULL Ciphers
#
# Kommandozeilen-Version (für Server Core):
IISCryptoCli.exe /template best
PowerShell Server Core
# PowerShell — TLS-Protokolle konfigurieren (Registry)

# TLS 1.0 und 1.1 deaktivieren
foreach ($version in @('TLS 1.0', 'TLS 1.1')) {
  $serverPath = "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\$version\Server"
  $clientPath = "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\$version\Client"

  foreach ($p in @($serverPath, $clientPath)) {
    New-Item -Path $p -Force | Out-Null
    Set-ItemProperty -Path $p \
      -Name "Enabled" -Value 0 -Type DWord
    Set-ItemProperty -Path $p \
      -Name "DisabledByDefault" -Value 1 -Type DWord
  }
}

# TLS 1.2 und 1.3 explizit aktivieren
foreach ($version in @('TLS 1.2', 'TLS 1.3')) {
  $path = "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\$version\Server"
  New-Item -Path $path -Force | Out-Null
  Set-ItemProperty -Path $path \
    -Name "Enabled" -Value 1 -Type DWord
  Set-ItemProperty -Path $path \
    -Name "DisabledByDefault" -Value 0 -Type DWord
}

Write-Host "TLS konfiguriert. Server-Neustart erforderlich!"
2 Schritt 2 von 5

Cipher Suites konfigurieren

Erlauben Sie nur starke Cipher Suites mit Forward Secrecy (ECDHE) und authentifizierter Verschlüsselung (GCM). TLS 1.3 verwendet automatisch sichere Suites — die Konfiguration betrifft hauptsächlich TLS 1.2.

PowerShell Cipher Suites
# PowerShell — Cipher Suites (Windows Server 2019+)
$suites = @(
  'TLS_AES_256_GCM_SHA384',            # TLS 1.3
  'TLS_AES_128_GCM_SHA256',            # TLS 1.3
  'TLS_CHACHA20_POLY1305_SHA256',      # TLS 1.3
  'TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384',
  'TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256',
  'TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384',
  'TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256'
)

# Cipher Suite Order per GPO-Registry setzen
$joined = $suites -join ','
$regPath = 'HKLM:\SOFTWARE\Policies\Microsoft\Cryptography\Configuration\SSL\00010002'
New-Item -Path $regPath -Force | Out-Null
Set-ItemProperty -Path $regPath \
  -Name "Functions" -Value $joined

Write-Host "Cipher Suites konfiguriert. Server-Neustart erforderlich!"
TLS-Änderungen erfordern einen Server-Neustart. Die Registry-Werte werden erst nach dem Neustart von Schannel gelesen. Planen Sie ein Wartungsfenster ein und testen Sie vorher in einer Staging-Umgebung.
3 Schritt 3 von 5

HTTPS erzwingen per URL Rewrite

Leiten Sie alle HTTP-Anfragen per 301-Redirect auf HTTPS um. Dies verhindert, dass Benutzer versehentlich unverschlüsselt zugreifen. In Kombination mit HSTS (Strict-Transport-Security) wird der Browser nach dem ersten Besuch ausschließlich HTTPS verwenden.

web.config URL Rewrite
<!-- web.config — HTTPS erzwingen per URL Rewrite -->
<configuration>
  <system.webServer>
    <rewrite>
      <rules>
        <rule name="HTTP to HTTPS"
              stopProcessing="true">
          <match url="(.*)" />
          <conditions>
            <add input="{HTTPS}"
                 pattern="off" />
          </conditions>
          <action type="Redirect"
                 url="https://{HTTP_HOST}/{R:1}"
                 redirectType="Permanent" />
        </rule>
      </rules>
    </rewrite>
  </system.webServer>
</configuration>
4 Schritt 4 von 5

TLS-Konfiguration verifizieren

Prüfen Sie nach dem Server-Neustart die aktive TLS-Konfiguration. Der Wolf-Agents Web Security Check testet TLS-Version und Cipher Suites automatisch. Für detaillierte Ergebnisse nutzen Sie nmap oder den Qualys SSL Labs Test.

PowerShell / nmap Verifizieren
# PowerShell — TLS-Konfiguration verifizieren

# TLS-Version prüfen
curl -sI https://ihre-domain.de -v 2>&1 |
  Select-String "SSL connection|TLSv"

# Detaillierter Scan mit nmap
nmap --script ssl-enum-ciphers -p 443 ihre-domain.de

# Erwartete Ergebnisse:
# TLSv1.2 und TLSv1.3 verfügbar
# Nur ECDHE + AES-GCM Cipher Suites
# Kein TLSv1.0, TLSv1.1, RC4, DES

# Zertifikat prüfen
$cert = [Net.ServicePointManager]::SecurityProtocol
Write-Host "Aktive Protokolle: $cert"

Häufige Fehler

Kein Server-Neustart nach Registry-Änderung

Registry-Änderungen an Schannel werden erst nach einem vollständigen Server-Neustart wirksam. Ein IIS-Reset (iisreset) reicht nicht aus — Schannel arbeitet auf Betriebssystemebene, nicht auf IIS-Ebene.

TLS 1.3 nicht verfügbar

TLS 1.3 ist erst ab Windows Server 2022 verfügbar. Windows Server 2019 unterstützt nur TLS 1.2 — stellen Sie sicher, dass TLS 1.2 mit starken Cipher Suites konfiguriert ist. Ein Upgrade auf Server 2022 ist empfehlenswert.

Alte Clients können nicht mehr verbinden

Das Deaktivieren von TLS 1.0/1.1 schliesst alte Clients aus (z.B. IE 10, Android 4.x, Java 7). Prüfen Sie Ihre Server-Logs auf Zugriffe mit alten TLS-Versionen, bevor Sie die Protokolle deaktivieren.

Zertifikat nicht an alle Bindings gebunden

Wenn Ihre Website über mehrere Hostnamen oder IP-Adressen erreichbar ist, muss das Zertifikat an jedes Binding gebunden sein. Fehlende Bindings führen zu Zertifikatsfehlern im Browser. Nutzen Sie SNI für mehrere Domains.

Compliance-Relevanz

TLS-Verschlüsselung ist eine Grundanforderung von NIS2, PCI DSS 4.0 und der DSGVO. Ohne TLS ist keine sichere Datenübertragung möglich. PCI DSS 4.0 verlangt mindestens TLS 1.2 für die Übertragung von Karteninhaberdaten. Der Wolf-Agents Web Security Check bewertet TLS mit bis zu 4 Punkten — inklusive Versionsprüfung und Zertifikatsdetails.

Wie steht Ihre Domain bei TLS & Zertifikate?

Prüfen Sie es jetzt — kostenlos, ohne Registrierung, mit 166 Prüfpunkte.