snippets · bash
Mein TLS-Zertifikat ist gültig, aber ein Client meckert trotzdem
Chrome ist zufrieden, curl oder ein anderer Client meldet Zertifikatsprobleme – oder umgekehrt. Dann reicht „Zertifikat läuft erst nächstes Jahr ab“ nicht.
Was liefert der Server wirklich aus?
openssl s_client -connect <HOST>:443 -servername <HOST> -showcerts </dev/null
-servername setzt SNI. Ohne SNI kann ein Server mit mehreren Domains ein anderes Zertifikat liefern als der Browser.
Für die kompakte Sicht auf das Leaf-Zertifikat:
echo | openssl s_client -connect <HOST>:443 -servername <HOST> 2>/dev/null \
| openssl x509 -noout -subject -issuer -dates -ext subjectAltName
Prüffragen
- Steht der Host im
subjectAltName? - Ist das Zertifikat zeitlich gültig?
- Ist der Aussteller plausibel?
- Liefert der Server die notwendige Zwischenzertifikatskette mit?
- Testest du wirklich denselben Host/IP wie der Browser?
Warum Clients unterschiedlich reagieren können
Clients nutzen unterschiedliche Trust Stores und können Zwischenzertifikate unterschiedlich nachladen oder cachen. Ein Browsererfolg beweist daher nicht automatisch, dass die ausgelieferte Kette für jeden Client vollständig ist.
Nicht mit -k oder --insecure „lösen“. Das schaltet nur die Prüfung ab und entfernt genau die Information, die du zur Diagnose brauchst.