Worum geht’s
Ein Zertifikat ist der Ausweis eines Servers. Wenn der Browser „Name stimmt nicht überein” oder „abgelaufen” meldet, liegt die Antwort in den X.509-Feldern. Im Second-Level dekodiert man Zertifikate und CSRs, prüft Subject/SAN/Gültigkeit/Key-Usage und entscheidet, ob ein Zertifikat für einen Dienst taugt.
Konzept
Ein X.509-Zertifikat bindet einen öffentlichen Schlüssel an eine Identität, beglaubigt durch eine CA. Die wichtigsten Felder:
- Subject — wem das Zertifikat gehört (CN = Common Name, früher der Hostname).
- Issuer — welche CA es ausgestellt (bei selbstsigniert: Subject == Issuer).
- Subject Alternative Name (SAN) — die maßgebliche Liste gültiger Hostnamen/IPs. Moderne Browser ignorieren den CN und prüfen nur den SAN. Ohne passenden SAN-Eintrag → Name-Mismatch.
- Gültigkeit —
Not Before/Not After. Außerhalb des Fensters ist das Zertifikat ungültig (häufigster Realfehler: abgelaufen). - Key Usage / Extended Key Usage (EKU) — wofür der Schlüssel verwendet werden darf.
Für TLS-Server muss
serverAuth(EKU) gesetzt sein. - Serial / Fingerprint — eindeutige Kennung des Zertifikats.
Ein CSR (Certificate Signing Request, PKCS#10) ist der Antrag: Er enthält Subject, gewünschte SAN und den öffentlichen Schlüssel, signiert mit dem privaten Schlüssel. Die CA prüft ihn und stellt daraus das Zertifikat aus. Der private Schlüssel verlässt den CSR nie.
- Subject / SAN — 30%
- Issuer — 20%
- Gültigkeit — 20%
- Key Usage / EKU — 20%
- Signatur — 10%
Beispiel-Fall
Aufgabe: Der Browser zeigt für https://shop.example.com einen Name-Mismatch. Das
Zertifikat ist gültig und nicht abgelaufen. Woran liegt’s?
- Zertifikat dekodieren → Subject CN lesen: steht dort z. B.
example.com. - SAN-Liste prüfen — das ist entscheidend. Enthält sie
www.example.comundexample.com, aber nichtshop.example.com? - Genau das ist der Fehler: Der aufgerufene Host steht nicht im SAN. Browser prüfen den Hostnamen nur gegen die SAN-Einträge, nicht gegen den CN.
- Lösung: Ein neues Zertifikat mit
shop.example.comim SAN ausstellen (oder ein Wildcard-SAN*.example.comverwenden). Danach passt der Name.
Anwenden
Brauchst du den Antrag statt des fertigen Zertifikats, nimm den CSR-Decoder — er zeigt Subject und gewünschte SAN aus dem PKCS#10-Request.
- Füge ein PEM-Zertifikat ein und dekodiere es.
- Lies Subject, Issuer und vor allem die SAN-Liste ab.
- Prüfe Not Before / Not After und die Key-Usage-Felder.
Selbsttest
Praxis-Challenge
Hole das Zertifikat einer Website (Browser → Zertifikatsdetails → PEM exportieren) und dekodiere es. Liste Subject, Issuer, alle SAN-Einträge und das Gültigkeitsfenster auf. Beantworte: Würde der aufgerufene Hostname gegen die SAN passen, und wie viele Tage läuft das Zertifikat noch?