security.txt für IIS konfigurieren

Schritt-für-Schritt-Anleitung: security.txt in IIS einrichten — physische Datei, .well-known-Routing, PowerShell-Deployment und PGP-Signierung.

IIS · Schritt für Schritt

security.txt in IIS

security.txt ist eine standardisierte Kontaktdatei (RFC 9116), die Sicherheitsforschern zeigt, wie sie Schwachstellen melden können. Mit 2 von 166 Punkten im Wolf-Agents Web Security Check ist sie schnell eingerichtet und zeigt professionelles Security-Bewusstsein.

In IIS legen Sie die Datei physisch unter wwwroot/.well-known/security.txt ab. IIS blockiert standardmäßig Verzeichnisse mit Punkt-Prefix — Sie müssen das Routing in der web.config anpassen, damit .well-known erreichbar ist.

Für maximale Glaubwürdigkeit signieren Sie die Datei mit PGP. So können Sicherheitsforscher verifizieren, dass die Kontaktdaten authentisch sind und nicht von einem Angreifer manipuliert wurden.

1 Schritt 1 von 5

security.txt Datei erstellen

Erstellen Sie die Datei unter C:\inetpub\wwwroot\.well-known\security.txt. Passen Sie die Kontaktdaten und das Ablaufdatum an. Das Expires-Feld ist Pflicht laut RFC 9116 und muss im ISO-8601-Format sein.

.well-known/security.txt RFC 9116
# .well-known/security.txt
# Gemaess RFC 9116 — Kontaktdaten für Sicherheitsforscher

Contact: mailto:security@ihre-domain.de
Contact: https://ihre-domain.de/security
Expires: 2027-03-30T00:00:00.000Z
Preferred-Languages: de, en
Canonical: https://ihre-domain.de/.well-known/security.txt
Policy: https://ihre-domain.de/responsible-disclosure
Hiring: https://ihre-domain.de/jobs
PowerShell Deployment
# PowerShell — security.txt automatisch deployen
$wwwroot = "C:\inetpub\wwwroot"
$wellKnown = Join-Path $wwwroot ".well-known"

# Verzeichnis anlegen (falls nicht vorhanden)
New-Item -ItemType Directory -Force -Path $wellKnown

# Expires-Datum: 1 Jahr ab heute
$expires = (Get-Date).AddYears(1).ToString(
  "yyyy-MM-ddTHH:mm:ss.000Z")

# security.txt erstellen
$content = @"
Contact: mailto:security@ihre-domain.de
Contact: https://ihre-domain.de/security
Expires: $expires
Preferred-Languages: de, en
Canonical: https://ihre-domain.de/.well-known/security.txt
Policy: https://ihre-domain.de/responsible-disclosure
"@

Set-Content -Path (Join-Path $wellKnown "security.txt") \
  -Value $content -Encoding UTF8

Write-Host "security.txt erstellt: $wellKnown\security.txt"
Write-Host "Expires: $expires"
2 Schritt 2 von 5

IIS Routing für .well-known konfigurieren

IIS und ASP.NET können Dateien in Punkt-Verzeichnissen blockieren. Die web.config muss das Routing explizit erlauben. Zusaetzlich leitet die URL Rewrite Rule Anfragen an /security.txt auf /.well-known/security.txt um — beides sind gueltige Pfade laut RFC 9116.

web.config Routing
<!-- web.config — .well-known Routing für IIS -->
<configuration>
  <system.webServer>
    <!-- .txt MIME-Type sicherstellen -->
    <staticContent>
      <remove fileExtension=".txt" />
      <mimeMap fileExtension=".txt"
               mimeType="text/plain" />
    </staticContent>

    <!-- .well-known Verzeichnis nicht blockieren -->
    <handlers>
      <add name="StaticFileHandler-.well-known"
           path=".well-known/*"
           verb="GET"
           type=""
           modules="StaticFileModule"
           resourceType="File" />
    </handlers>

    <!-- URL Rewrite: Root-Fallback -->
    <rewrite>
      <rules>
        <rule name="security.txt redirect"
              stopProcessing="true">
          <match url="^security\.txt$" />
          <action type="Redirect"
                 url="/.well-known/security.txt"
                 redirectType="Permanent" />
        </rule>
      </rules>
    </rewrite>
  </system.webServer>
</configuration>
3 Schritt 3 von 5

PGP-Signierung hinzufügen

Eine PGP-Signierung ist optional, aber empfohlen. Sie beweist, dass die Kontaktdaten von Ihnen stammen und nicht manipuliert wurden. Installieren Sie GPG4Win auf dem Server und signieren Sie die Datei mit Ihrem Security-Schlüssel.

PowerShell / GPG PGP-Signierung
# PowerShell — security.txt mit PGP signieren
# Voraussetzung: GPG4Win installiert

$file = "C:\inetpub\wwwroot\.well-known\security.txt"

# Klartext-Signatur erstellen
gpg --clearsign --default-key security@ihre-domain.de $file

# Signierte Datei ersetzen
Move-Item -Force "$file.asc" $file

Write-Host "security.txt signiert."

# Ergebnis: Die Datei enthält jetzt
# -----BEGIN PGP SIGNED MESSAGE-----
# Hash: SHA512
# 
# Contact: mailto:security@ihre-domain.de
# ...
# -----BEGIN PGP SIGNATURE-----
# ...
# -----END PGP SIGNATURE-----
4 Schritt 4 von 5

Erreichbarkeit testen

Prüfen Sie, ob die Datei korrekt ausgeliefert wird. Der Content-Type muss text/plain sein. Testen Sie sowohl den kanonischen Pfad (/.well-known/security.txt) als auch den Root-Redirect (/security.txt).

PowerShell Verifizieren
# PowerShell — security.txt Erreichbarkeit prüfen

# Header prüfen
curl -sI https://ihre-domain.de/.well-known/security.txt
# Erwartet: HTTP/1.1 200 OK
# Erwartet: Content-Type: text/plain

# Inhalt prüfen
curl -s https://ihre-domain.de/.well-known/security.txt
# Erwartet: Contact, Expires, Canonical Felder

# Root-Redirect prüfen
curl -sI https://ihre-domain.de/security.txt
# Erwartet: HTTP/1.1 301 → /.well-known/security.txt

# Expires-Datum validieren
$content = (curl -s https://ihre-domain.de/.well-known/security.txt)
$expires = ($content | Select-String "Expires:").ToString()
Write-Host "$expires"

Häufige Fehler

.well-known blockiert (404)

IIS und ASP.NET blockieren Punkt-Verzeichnisse standardmäßig. Konfigurieren Sie den StaticFileHandler in der web.config, um .well-known zu erlauben. Prüfen Sie auch die applicationHost.config auf Server-Ebene.

Expires-Feld fehlt oder abgelaufen

RFC 9116 verlangt ein Expires-Feld im ISO-8601-Format. Ohne dieses Feld ist die Datei nicht standardkonform. Setzen Sie es auf maximal 1 Jahr in die Zukunft und erneuern Sie es regelmäßig.

Falscher Content-Type

Die Datei muss mit Content-Type: text/plain ausgeliefert werden. Prüfen Sie die staticContent-Konfiguration, falls IIS einen anderen MIME-Type sendet. Einige Anwendungsframeworks können den MIME-Type überschreiben.

ASP.NET Routing faengt Request ab

In ASP.NET MVC/Core Anwendungen kann das Routing-System den Request an /.well-known/security.txt abfangen und eine 404-Seite liefern. Konfigurieren Sie eine Route-Ausnahme oder nutzen Sie den StaticFileHandler.

Compliance-Relevanz

Das BSI empfiehlt security.txt als Best Practice für Coordinated Vulnerability Disclosure. NIS2 fordert Meldeverfahren für Sicherheitsvorfälle — security.txt stellt sicher, dass Forscher den richtigen Ansprechpartner finden. Der Wolf-Agents Web Security Check bewertet security.txt mit bis zu 2 Punkten und prüft die korrekte Formatierung der Pflichtfelder.

Wie steht Ihre Domain bei security.txt?

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