Version 3

hardened

Bewusste TLS-Auswahl, HSTS, Security-Header. Der Kontrast zu Version 2.

Diese Seite läuft über eine Nginx-Konfiguration, in der jede sicherheitsrelevante Direktive explizit gesetzt wurde — keine Defaults, keine Zufälle. Zertifikat von Let's Encrypt (DV), diesmal mit ECDSA-Schlüssel (P-256).

Was gegenüber Version 2 anders ist

Aspektbasic-tlshardened
ProtokolleNginx-DefaultsNur TLS 1.2 und 1.3
Cipher-Auswahlunkonfiguriert3 moderne AEAD-Suites
Cipher-PräferenzClient entscheidetServer bestimmt
HSTS2 Jahre
Security-Header5 Stück inkl. CSP
OCSP-Staplingaktiv
Server-Versionim Header sichtbarversteckt
Session-TicketsStandarddeaktiviert
Was das im Ergebnis bedeutet:

Selbst nachmessen

Antwort-Header — die ganze Härtung auf einmal

curl -sI https://hardened.ebrus-lab.de

Achte auf strict-transport-security, content-security-policy, x-frame-options und den schlicht gehaltenen server-Header ohne Versionsnummer.

Ausgehandeltes Protokoll und Cipher

echo | openssl s_client -connect hardened.ebrus-lab.de:443 -servername hardened.ebrus-lab.de 2>/dev/null | grep -E "Protocol|Cipher"

Erwartete Antwort: TLSv1.3 mit einer Cipher wie TLS_AES_256_GCM_SHA384. Der Unterstrich im Namen ist das TLS-1.3-Kennzeichen — TLS 1.2-Cipher tragen Bindestriche.

TLS 1.2 erzwingen — sichtbare Bindestrich-Cipher

echo | openssl s_client -connect hardened.ebrus-lab.de:443 -servername hardened.ebrus-lab.de -tls1_2 2>/dev/null | grep -E "Protocol|Cipher"

Nun eine Cipher wie ECDHE-ECDSA-AES256-GCM-SHA384. Die vier Bestandteile im Namen entsprechen den vier kryptografischen Kategorien: Schlüsselaustausch (ECDHE), Authentifizierung (ECDSA), Verschlüsselung (AES-256-GCM), Hash (SHA-384).

TLS 1.1 wird abgelehnt

openssl s_client -connect hardened.ebrus-lab.de:443 -tls1_1 2>&1 | grep -E "Protocol|handshake failure|no protocols available"

Ein no protocols available oder handshake failure ist genau das, was hier gewünscht ist.

Zertifikat inspizieren — ECDSA statt RSA

echo | openssl s_client -connect hardened.ebrus-lab.de:443 -servername hardened.ebrus-lab.de 2>/dev/null | openssl x509 -noout -subject -issuer -dates
echo | openssl s_client -connect hardened.ebrus-lab.de:443 -servername hardened.ebrus-lab.de 2>/dev/null | openssl x509 -noout -text | grep -A2 "Public Key Algorithm"

Der Issuer heißt bei hardened YE2 (Let's Encrypt ECDSA-Intermediate), bei basic-tls YR1 (RSA-Intermediate). Der Buchstabe im Namen verrät die Kryptofamilie.

Externe Bewertung

Für einen kompletten Report inklusive Note:

https://www.ssllabs.com/ssltest/analyze.html?d=hardened.ebrus-lab.de