SSL/TLS Troubleshooting

6 Kategorien
Die wichtigsten Tools und Techniken für die SSL/TLS-Fehlersuche: s_client · Zertifikatsprüfung · Chain · Cipher · Fehlercodes · Tools SSL/TLS-Fehler sind häufig und vielfältig. Diese Cheatsheet hilft Ihnen, Probleme mit Zertifikaten, Chains, Cipher Suites und Verbindungen systematisch zu diagnostizieren und zu beheben.

Diagnose mit s_client – Verbindungstests

openssl s_client -connect · -showcerts · -servername
openssl s_client -connect example.com:443 -showcerts

openssl s_client ist das wichtigste Tool für die SSL/TLS-Diagnose. Es baut eine TLS-Verbindung zum Server auf und zeigt detaillierte Informationen über Zertifikate, Cipher Suites und den Handshake.

Wichtige s_client-Optionen

Option Beschreibung
-connect host:port Zielserver und Port (Standard: 443)
-showcerts Alle Zertifikate der Kette anzeigen
-servername host SNI (Server Name Indication) setzen
-tls1_2 / -tls1_3 Bestimmte TLS-Version erzwingen
-ciphers 'CIPHER' Bestimmte Cipher Suites testen
-verify [depth] Zertifikatsvalidierung aktivieren
-CApath / -CAfile CA-Verzeichnis/Datei für Validierung
-tlsextdebug TLS-Erweiterungen debuggen
-brief Kompakte Ausgabe
Beispiele
# Grundlegende Verbindung prüfen
openssl s_client -connect example.com:443
# SNI verwenden (virtuelle Hosts)
openssl s_client -connect example.com:443 -servername example.com
# Alle Zertifikate anzeigen
openssl s_client -connect example.com:443 -showcerts
# TLS 1.3 erzwingen
openssl s_client -connect example.com:443 -tls1_3
# Zertifikat validieren
openssl s_client -connect example.com:443 -verify 2 -CApath /etc/ssl/certs
# Nur Kopfzeilen anzeigen (für schnelle Prüfung)
openssl s_client -connect example.com:443 -brief
Typische Ausgabe (gekürzt):
CONNECTED(00000003)
depth=2 C=US, O=Internet Security Research Group, CN=ISRG Root X1
verify return:1
Certificate chain
0 s:CN=example.com
i:C=US, O=Let's Encrypt, CN=R3
1 s:C=US, O=Let's Encrypt, CN=R3
i:C=US, O=Internet Security Research Group, CN=ISRG Root X1
SSL-Session:
Protocol: TLSv1.3
Cipher: TLS_AES_256_GCM_SHA384
Tipp: openssl s_client -connect example.com:443 ist der erste Befehl bei SSL-Problemen. Wenn Sie keine Verbindung aufbauen können, prüfen Sie Firewall, Port und DNS.

Zertifikatsprüfung – Gültigkeit & Details

x509 -in · -text · -startdate · -enddate
openssl x509 -in server.crt -text -noout

Zertifikatsprüfung – Mit OpenSSL können Sie Zertifikate im Detail analysieren: Gültigkeitszeitraum, Subject, Aussteller, SAN und Fingerprints.

Beispiele
# Zertifikat vollständig anzeigen
openssl x509 -in server.crt -text -noout
# Gültigkeitszeitraum prüfen
openssl x509 -in server.crt -startdate -enddate -noout
# Subject anzeigen
openssl x509 -in server.crt -subject -noout
# Aussteller (Issuer) anzeigen
openssl x509 -in server.crt -issuer -noout
# SHA256-Fingerprint
openssl x509 -in server.crt -fingerprint -sha256 -noout
# SAN (Subject Alternative Names) prüfen
openssl x509 -in server.crt -text -noout | grep -A 1 "Subject Alternative Name"
# Modulus (für CSR-Vergleich)
openssl x509 -in server.crt -modulus -noout | openssl md5
# Ablauf in Tagen berechnen
echo $(( ($(date -d "$(openssl x509 -enddate -noout -in server.crt | cut -d= -f2)" +%s) - $(date +%s)) / 86400 ))
Tipp: Prüfen Sie regelmäßig das Ablaufdatum Ihrer Zertifikate. openssl x509 -in server.crt -enddate -noout zeigt das Ende der Gültigkeit. Let's Encrypt-Zertifikate sind 90 Tage gültig.

Zertifikatskette – Chain prüfen & reparieren

verify · -CAfile · -untrusted · fullchain
openssl verify -CAfile root.pem -untrusted intermediate.pem server.crt

Zertifikatskette – Fehlende Intermediate-CAs sind eine der häufigsten Ursachen für SSL-Fehler. Die Chain muss vom Server-Zertifikat über die Intermediate(s) bis zur vertrauenswürdigen Root-CA vollständig sein.

Beispiele
# Chain mit OpenSSL prüfen
openssl verify -CAfile root.pem -untrusted intermediate.pem server.crt
# Chain von Server abrufen
openssl s_client -connect example.com:443 -showcerts 2>/dev/null | sed -n '/-----BEGIN CERTIFICATE-----/,/-----END CERTIFICATE-----/p'
# Fehlende Intermediate-CA identifizieren
openssl s_client -connect example.com:443 -showcerts 2>/dev/null | openssl x509 -issuer -noout
# Vollständige Kette aus Server-Zertifikat + Intermediate erstellen
cat server.crt intermediate.crt > fullchain.crt
# Chain mit s_client anzeigen
openssl s_client -connect example.com:443 -showcerts 2>/dev/null | openssl x509 -text -noout
Fehlermeldung bei fehlender Chain:
verify error: unable to get local issuer certificate
Lösung: Fügen Sie die Intermediate-CA zur Kette hinzu.
Tipp: Bei Nginx verwenden Sie die fullchain.pem von Let's Encrypt, die Server-Zertifikat und Intermediate enthält. Bei Apache nutzen Sie SSLCertificateChainFile für die Intermediate.

Cipher Suites – Verschlüsselung diagnostizieren

ciphers · s_cipher · protokolle
openssl ciphers -v 'ECDHE+AES256-GCM'

Cipher Suites & Protokolle – Fehler bei der Cipher-Aushandlung treten häufig auf, wenn Client und Server keine gemeinsame Cipher Suite unterstützen.

Beispiele
# Verfügbare Cipher Suites anzeigen
openssl ciphers -v
# Nur moderne Cipher anzeigen
openssl ciphers -v 'ECDHE+AES256-GCM:ECDHE+CHACHA20'
# Test: Welche Cipher unterstützt der Server?
openssl s_client -connect example.com:443 -cipher 'ECDHE+AES256-GCM' -brief
# TLS-Versionen testen
openssl s_client -connect example.com:443 -tls1_2 -brief
openssl s_client -connect example.com:443 -tls1_3 -brief
# Ausgehandelte Cipher anzeigen
openssl s_client -connect example.com:443 2>&1 | grep "Cipher"
Fehler bei Cipher-Aushandlung:
no shared cipher
Lösung: Erweitern Sie die Cipher-Liste auf dem Server oder Client.
Tipp: Nutzen Sie openssl ciphers -v, um zu sehen, welche Cipher Ihre OpenSSL-Version unterstützt. Mit -cipher bei s_client können Sie gezielt testen.

Häufige Fehler – Ursachen & Lösungen

unable to verify · self-signed · expired
error: certificate is not yet validSystemzeit prüfen! self-signed certificateCA-Zertifikat nicht vertrauenswürdig unable to get local issuer certificateIntermediate-CA fehlt

Häufige SSL/TLS-Fehler – Die häufigsten Fehlermeldungen und ihre Lösungen. Viele Probleme lassen sich mit OpenSSL schnell diagnostizieren.

Fehler & Lösungen

Fehlermeldung Ursache Lösung
unable to get local issuer certificate Intermediate-CA nicht im Trust Store Kette vervollständigen (fullchain.pem)
self-signed certificate Zertifikat nicht von vertrauenswürdiger CA Offizielles Zertifikat oder CA importieren
certificate has expired Zertifikat abgelaufen Erneuern (Let's Encrypt, kaufen)
certificate is not yet valid Systemzeit falsch NTP-Synchronisation prüfen (date)
no shared cipher Keine gemeinsame Cipher Cipher-Liste anpassen
wrong version number Falsches Protokoll (z.B. TLS vs. SSL) Protokollversion prüfen
certificate revoked Zertifikat wurde widerrufen OCSP/CRL prüfen, neues Zertifikat
hostname mismatch CN/SAN stimmt nicht mit Domain überein Richtiges Zertifikat für Domain
Beispiele
# Systemzeit prüfen (häufige Fehlerquelle!)
date
# Zertifikat auf Ablauf prüfen
openssl x509 -in server.crt -checkend 86400 # Prüft, ob Zertifikat in 24h abläuft
# Domain-Match prüfen (CN + SAN)
openssl x509 -in server.crt -text -noout | grep -A 1 "Subject Alternative Name"
openssl x509 -in server.crt -subject -noout
Tipp: Prüfen Sie bei "certificate is not yet valid" immer die Systemzeit! Ein falsches Datum führt oft zu SSL-Fehlern, die schwer zu diagnostizieren sind.

Tools & Ressourcen – Hilfreiche Helfer

SSL Labs · Security Headers · HSTS Preload · OpenSSL
# Web-Tools für die SSL/TLS-Diagnose https://www.ssllabs.com/ssltest/ https://securityheaders.com/ https://hstspreload.org/

Tools & Ressourcen – Eine Sammlung von Web-Tools und Kommandozeilen-Tools für die SSL/TLS-Fehlersuche und -Konfiguration.

Wichtige Tools

Tool Beschreibung URL / Befehl
SSL Labs Umfassender SSL/TLS-Test (A+ bis F) https://www.ssllabs.com/ssltest/
Security Headers Prüft Security Headers (HSTS, CSP, etc.) https://securityheaders.com/
HSTS Preload Für die HSTS Preload List https://hstspreload.org/
Mozilla SSL Config Generator für sichere Konfigurationen https://ssl-config.mozilla.org/
OpenSSL Kommandozeilen-Tool openssl s_client, verify, x509
certbot Let's Encrypt-Client certbot certonly --standalone
dig +dnssec DANE/TLSA prüfen dig +dnssec _443._tcp.example.com TLSA
testssl.sh Erweiterter SSL-Test (Kommandozeile) git clone https://github.com/drwetter/testssl.sh
Beispiele
# testssl.sh (umfassender CLI-Test)
./testssl.sh -U -p example.com # Prüft unsichere Protokolle
./testssl.sh -h example.com # Hilfe anzeigen
# DANE/TLSA prüfen (DNS-over-HTTPS)
dig +short _443._tcp.example.com TLSA
# Zertifikat von Server herunterladen
openssl s_client -connect example.com:443 -showcerts 2>/dev/null | sed -n '/-----BEGIN CERTIFICATE-----/,/-----END CERTIFICATE-----/p'
Tipp: testssl.sh ist ein hervorragendes Kommandozeilen-Tool für detaillierte SSL/TLS-Tests. Es prüft Protokolle, Cipher, Schwachstellen und gibt klare Empfehlungen.

SSL/TLS Troubleshooting im Überblick

s_client Verbindung testen
Handshake, Zertifikate
x509 Zertifikat prüfen
Gültigkeit, SAN
verify Chain prüfen
Intermediate-CA
ciphers Cipher diagnostizieren
Unterstützung prüfen
Fehler Häufige Fehler & Lösungen
Systemzeit, Chain
Tools SSL Labs, testssl.sh
Umfassende Tests

Quick Summary

s_client
Verbindung testen
x509
Zertifikat prüfen
verify
Chain prüfen
ciphers
Cipher prüfen
Fehler
Häufige Fehler
Tools
SSL Labs
openssl s_client -connect example.com:443 · openssl x509 -in server.crt -text -noout · openssl verify -CAfile root.pem -untrusted inter.pem server.crt