security.txt in Spring Boot

security.txt nach RFC 9116 bereitstellen -- mit Spring MVC ResourceHandler, SecurityFilterChain-Freigabe und korrektem Cache-Control.

Spring Boot · Schritt für Schritt

security.txt in Spring Boot

security.txt (RFC 9116) ist eine standardisierte Datei, die Sicherheitsforschern zeigt, wie sie Schwachstellen melden können. Die Datei muss unter /.well-known/security.txt erreichbar sein. Sie ist mit 2 von 166 Punkten im Wolf-Agents Web Security Check bewertet.

In Spring Boot platzieren Sie die Datei unter src/main/resources/static/.well-known/security.txt. Damit Spring MVC die Datei korrekt ausliefert, benoetigen Sie einen ResourceHandler. Zusaetzlich muss die SecurityFilterChain den /.well-known/**-Pfad freigeben, damit keine Authentifizierung erforderlich ist.

1Schritt 1 von 3

security.txt erstellen

Erstellen Sie die Datei unter src/main/resources/static/.well-known/security.txt. Die Pflichtfelder nach RFC 9116 sind Contact und Expires. Das Expires-Datum sollte maximal ein Jahr in der Zukunft liegen.

security.txtRFC 9116
# src/main/resources/static/.well-known/security.txt
Contact: mailto:security@example.com
Expires: 2027-03-28T00:00:00.000Z
Preferred-Languages: de, en
Canonical: https://example.com/.well-known/security.txt
Policy: https://example.com/security-policy

# Optional aber empfohlen:
Encryption: https://example.com/.well-known/pgp-key.txt
Acknowledgments: https://example.com/hall-of-fame
Expires-Datum beachten

Das Expires-Feld ist ein Pflichtfeld. Setzen Sie einen Reminder, um die Datei vor Ablauf zu aktualisieren. Ein abgelaufenes Expires-Datum signalisiert, dass die Datei nicht mehr gepflegt wird.

2Schritt 2 von 3

ResourceHandler und SecurityConfig

Konfigurieren Sie einen ResourceHandler für den .well-known-Pfad und geben Sie den Pfad in der SecurityFilterChain frei. Ohne permitAll() für /.well-known/** erfordert Spring Security eine Authentifizierung -- Sicherheitsforscher können die Datei dann nicht abrufen.

WebConfig.javaProduktiv
// WebConfig.java -- ResourceHandler fuer .well-known
@Configuration
public class WebConfig
        implements WebMvcConfigurer {

    @Override
    public void addResourceHandlers(
            ResourceHandlerRegistry registry) {
        registry
            .addResourceHandler("/.well-known/**")
            .addResourceLocations(
                "classpath:/static/.well-known/")
            .setCacheControl(CacheControl
                .maxAge(Duration.ofHours(1))
                .cachePublic());
    }
}
SecurityConfig.javaProduktiv
// SecurityConfig.java -- .well-known freigeben
@Bean
public SecurityFilterChain securityFilterChain(HttpSecurity http)
        throws Exception {
    http.authorizeHttpRequests(auth -> auth
        // .well-known oeffentlich zugaenglich machen
        .requestMatchers("/.well-known/**").permitAll()
        .anyRequest().authenticated())
        .headers(headers -> headers
            .contentTypeOptions(Customizer.withDefaults()));
    return http.build();
}
Der Wolf-Agents Web Security Check prüft security.txt automatisch und bewertet die Datei mit bis zu 2 Punkten.
3Schritt 3 von 3

Zugriff verifizieren

Prüfen Sie den Zugriff auf die security.txt per curl. Die Datei muss mit Status 200 und Content-Type text/plain ausgeliefert werden.

TerminalVerifizierung
# security.txt pruefen
curl -sI http://localhost:8080/.well-known/security.txt

# Erwartete Ausgabe:
HTTP/1.1 200
content-type: text/plain

# Inhalt pruefen:
curl -s http://localhost:8080/.well-known/security.txt

# Erwartete Ausgabe:
Contact: mailto:security@example.com
Expires: 2027-03-28T00:00:00.000Z

Häufige Fehler bei security.txt in Spring Boot

.well-known-Pfad durch Spring Security blockiert

Ohne permitAll() für /.well-known/** leitet Spring Security auf die Login-Seite weiter oder gibt 403 zurück. Fuegen Sie die Freigabe in die SecurityFilterChain ein.

Actuator-Pfad kollidiert mit .well-known

Wenn Actuator unter einem aehnlichen Pfad konfiguriert ist, kann es zu Routing-Konflikten kommen. Stellen Sie sicher, dass management.endpoints.web.base-path nicht mit /.well-known kollidiert.

Falscher Content-Type für security.txt

Spring MVC liefert .txt-Dateien standardmaessig mit text/plain aus. Falls ein anderer Content-Type gesetzt wird, konfigurieren Sie die ContentNegotiation oder setzen Sie den Header explizit.

Compliance-Relevanz

security.txt erleichtert die verantwortungsvolle Offenlegung von Schwachstellen und ist in mehreren Standards empfohlen.

NIS2Art. 21(e) -- Schwachstellenmanagement und koordinierte Offenlegung
BSITR-03183 -- Empfehlung für security.txt nach RFC 9116
ISO 29147Koordinierte Schwachstellenoffenlegung -- Kontaktinformation bereitstellen

Wie steht Ihre Domain bei security.txt?

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