📜Zertifikate & PKI

Der Schlüsselaustausch schützt vor Lauschern – aber nicht vor einem Angreifer in der Mitte, der sich als www.example.org ausgibt. Dagegen hilft das Zertifikat: eine von einer vertrauenswürdigen Stelle signierte Aussage „dieser öffentliche Schlüssel gehört zu diesem Namen“.

🧬Aufbau eines X.509-Zertifikats

Klicke durch die ASN.1-Struktur (RFC 5280). Die Werte stammen aus einem Zertifikat, das dein Browser gerade eben mit WebCrypto erzeugt hat.

issuer

Distinguished Name der ausstellenden CA. Muss exakt dem Subject des Ausstellerzertifikats entsprechen – so wird die Kette gebaut.

Wert im Beispiel-Leaf (eben im Browser erzeugt):
⏳ erzeuge Zertifikat …

⛓️Zertifikatskette prüfen

Root → Intermediate → Leaf. Wähle ein Szenario und sieh, welche Prüfung scheitert und welche Fehlermeldung der Browser zeigen würde.
Server schickt Leaf + Intermediate, Root ist im Vertrauensspeicher.
⏳ Erzeuge Root, Intermediate und Leaf mit ECDSA P-256 …

🏛️Vertrauensspeicher (Trust Store)

📚
Wer entscheidet?
Betriebssystem- und Browserhersteller pflegen Root-Programme (Mozilla NSS, Apple, Microsoft, Chrome Root Store). Nur deren Roots gelten als vertrauenswürdig – Linux-Distributionen übernehmen meist die Mozilla-Liste (Paket ca-certificates).
🧊
Warum Intermediates?
Der Root-Schlüssel liegt offline im Tresor (HSM). Signiert wird im Alltag mit Intermediate-Schlüsseln; wird einer kompromittiert, sperrt man nur ihn. Der Server muss das Intermediate mitschicken (fullchain.pem), die Root nicht.
🏢
Eigene CA
Für interne Dienste oder mTLS kann man eine eigene Root betreiben und gezielt verteilen. Öffentlich erreichbare Websites brauchen eine CA aus den Root-Programmen – eine selbstsignierte Root löst dort immer ERR_CERT_AUTHORITY_INVALID aus.

🚫Sperrung: CRL, OCSP, Stapling

Was passiert, wenn ein privater Schlüssel gestohlen wird, bevor das Zertifikat abläuft?
VerfahrenSo funktioniert esVorteilNachteil
CRLCA veröffentlicht signierte Liste gesperrter Seriennummern (URL im Zertifikat: cRLDistributionPoints)keine Anfrage pro Besuch → datenschutzfreundlichListen können groß sein; Browser verteilen komprimierte Auszüge (Chrome CRLSets, Firefox CRLite)
OCSPClient fragt die CA online: „Ist Seriennummer X gesperrt?“aktuellCA erfährt, wer welche Seite besucht; bei Ausfall meist „soft-fail“ (wird ignoriert)
OCSP StaplingServer holt die signierte OCSP-Antwort selbst und liefert sie im Handshake mit (status_request)keine Datenschutzlücke, schnellnur wenn die CA OCSP anbietet – Let's Encrypt hat OCSP am 06.08.2025 abgeschaltet
kurze LaufzeitZertifikat läuft einfach bald ab (z. B. 6 Tage)kein Sperrmechanismus nötigsetzt vollautomatische Erneuerung voraus

📚 Quelle: Let's Encrypt: Ending OCSP Support in 2025 (seit 07.05.2025 nur noch CRL-URLs in Zertifikaten, OCSP-Responder am 06.08.2025 abgeschaltet)

🔭Certificate Transparency

Jede CA könnte theoretisch ein Zertifikat für jede Domain ausstellen. CT macht solche Fehlausstellungen sichtbar.
🏛️
CA
reicht Vorzertifikat bei mehreren Logs ein
→
📒
CT-Logs
öffentlich, nur anhängbar (Merkle-Baum), antworten mit SCT
→
📜
Zertifikat
enthält die SCTs (Erweiterung 1.3.6.1.4.1.11129.2.4.2)
→
🌐
Browser
verlangt gültige SCTs, sonst Fehler

Domaininhaber und Monitore (z. B. über crt.sh) durchsuchen die Logs nach Zertifikaten für ihre Namen. So fallen falsch ausgestellte Zertifikate auf – auch deshalb sollte man in internen Zertifikaten öffentlicher CAs keine geheimen Hostnamen verwenden: sie werden veröffentlicht.

📚 Quelle: RFC 6962 Certificate Transparency

📅Laufzeiten: immer kürzer

Stand: September 2026, mit Quellen.

Maximale Laufzeit öffentlicher TLS-Zertifikate (CA/B Forum SC-081v3)

ab 01.09.2020DCV-Wiederverwendung 398 Tage · ≈ 2× Erneuern/Jahr
398 Tage
ab 15.03.2026DCV-Wiederverwendung 200 Tage · ≈ 3× Erneuern/Jahr
200 Tage
ab 15.03.2027DCV-Wiederverwendung 100 Tage · ≈ 6× Erneuern/Jahr
100 Tage
ab 15.03.2029DCV-Wiederverwendung 10 Tage · ≈ 12× Erneuern/Jahr
47 Tage

„Erneuern/Jahr“ bei Erneuerung nach ⅔ der Laufzeit. Kürzere Laufzeiten begrenzen den Schaden durch gestohlene Schlüssel und machen Sperrlisten weniger wichtig – setzen aber Automatisierung voraus. Ab 2029 müssen Domains alle 10 Tage neu validiert werden.

📚 Quelle: CA/B Forum Baseline Requirements §6.3.2, §4.2.1 · Ballot SC-081v3 (April 2025)

Let's Encrypt: von 90 auf 45 Tage

  1. 02.12.2025
    Ankündigung: Laufzeit sinkt schrittweise von 90 auf 45 Tage
  2. 13.05.2026
    Profil „tlsserver“ (Opt-in) stellt 45-Tage-Zertifikate aus
  3. 10.02.2027
    Standardprofil „classic“: 64 Tage, Autorisierung 10 Tage wiederverwendbar
  4. 16.02.2028
    Standardprofil „classic“: 45 Tage, Autorisierung 7 Stunden wiederverwendbar

Zusätzlich gibt es das Profil shortlived mit rund 6 Tagen Laufzeit. Solche kurzlebigen Zertifikate (≤ 7 Tage) brauchen laut Baseline Requirements keine Sperrinformationen. Empfohlen wird, die Erneuerung per ARI (RFC 9773) steuern zu lassen statt fester Intervalle.

📚 Quelle: letsencrypt.org, 02.12.2025 · Let's Encrypt Profiles

🔤PEM, DER, Base64

DER ist die binäre Kodierung der ASN.1-Struktur: jedes Element als Tag – Länge – Wert. Ein Zertifikat beginnt fast immer mit 30 82 xx xx = SEQUENCE mit 2-Byte-Länge.

PEM ist DER in Base64, 64 Zeichen pro Zeile, zwischen -----BEGIN CERTIFICATE----- und -----END CERTIFICATE----- (RFC 7468). Deshalb beginnt jedes PEM-Zertifikat mit MII…: Base64 von 30 82.

🔍 Zum PEM-Decoder
💡 Dateien in der Praxis
fullchain.pem = Leaf + Intermediate(s) (für nginx ssl_certificate) · privkey.pem = privater Schlüssel (nur für root/nginx lesbar!) · .crt/.cer = PEM oder DER, die Endung verrät es nicht · .p12/.pfx = PKCS#12-Container mit Schlüssel und Kette, passwortgeschützt.