SSL/TLS-Zertifikate – Grundlagen
Was SSL/TLS-Zertifikate sind, wie der Handshake funktioniert, welche Typen es gibt und wie du Zertifikate im KMU-Alltag prüfst und verwaltest.
Was steckt hinter HTTPS?
Wenn du in deinem Browser das Schloss-Symbol siehst, läuft die Verbindung über HTTPS – also HTTP gesichert mit TLS. Aber was passiert da genau?
TLS (Transport Layer Security) ist das Protokoll, das Daten auf dem Weg zwischen Browser und Server verschlüsselt. Den alten Namen SSL (Secure Sockets Layer) hört man noch überall, obwohl SSL offiziell seit 2015 als veraltet gilt und nicht mehr verwendet werden sollte. Heute heisst es TLS 1.2 oder TLS 1.3 – aber im Alltag sagt jeder noch “SSL-Zertifikat”.
Das Zertifikat selbst ist eine Art digitaler Ausweis des Servers. Es enthält:
- Den öffentlichen Schlüssel des Servers (Public Key)
- Den Domainnamen, für den es ausgestellt wurde
- Die ausstellende Zertifizierungsstelle (CA)
- Das Ablaufdatum
Wie funktioniert der TLS-Handshake?
Bevor auch nur ein Byte an Nutzdaten fliesst, findet der Handshake statt. In vereinfachter Form:
- Client Hello – Browser schickt: “Hallo, ich spreche TLS 1.3, hier meine unterstützten Cipher Suites.”
- Server Hello – Server antwortet: “Passt, wir nehmen TLS 1.3 mit AES-256-GCM. Hier ist mein Zertifikat.”
- Zertifikatsprüfung – Browser prüft: Ist die CA vertrauenswürdig? Stimmt der Domainname? Ist das Zertifikat noch gültig?
- Schlüsseltausch – Beide Seiten einigen sich auf einen gemeinsamen Session Key (symmetrischer Schlüssel), ohne ihn je direkt zu übertragen (Diffie-Hellman-Verfahren).
- Fertig – Ab jetzt läuft alles verschlüsselt mit dem Session Key.
Der ganze Vorgang dauert bei TLS 1.3 nur noch einen Roundtrip (früher zwei bei TLS 1.2), was spürbar schneller ist.
Begriffe, die du kennen musst
| Begriff | Bedeutung |
|---|---|
| CA (Certificate Authority) | Vertrauenswürdige Stelle, die Zertifikate ausstellt und signiert. Bekannte CAs: DigiCert, GlobalSign, Sectigo, Let’s Encrypt |
| Root CA | Oberste CA. Ihr Zertifikat ist in deinem Betriebssystem/Browser fix hinterlegt |
| Intermediate CA | Zwischenstufe zwischen Root CA und dem Zertifikat – aus Sicherheitsgründen |
| CSR (Certificate Signing Request) | Anfrage an die CA: enthält deinen Public Key und Domaindaten |
| Private Key | Geheimer Schlüssel – bleibt immer auf dem Server, niemals weitergeben |
| Public Key | Öffentlicher Schlüssel – steckt im Zertifikat, darf jeder sehen |
| SAN (Subject Alternative Name) | Erlaubt mehrere Domains in einem Zertifikat (z.B. firma.ch + www.firma.ch + mail.firma.ch) |
| Wildcard-Zertifikat | *.firma.ch – deckt alle direkte Subdomains ab, nicht jedoch sub.sub.firma.ch |
| Self-Signed | Selbst ausgestelltes Zertifikat – kein Browser-Trust, nur für interne/Testumgebungen |
| PEM / CRT / CER / PFX | Verschiedene Dateiformate für Zertifikate und Schlüssel |
| Chain of Trust | Die Kette von Root CA → Intermediate CA → dein Zertifikat |
Zertifikat-Typen nach Validierungsgrad
Nicht alle Zertifikate sind gleich. Die CA prüft je nach Typ mehr oder weniger gründlich:
| Typ | Prüfung | Ausstellungszeit | Typische Nutzung |
|---|---|---|---|
| DV (Domain Validation) | Nur Kontrolle über die Domain (per E-Mail oder DNS-Record) | Minuten bis Stunden | Websites, Blogs, Let’s Encrypt |
| OV (Organization Validation) | Domain + Firmenregistrierung wird geprüft | 1–3 Tage | Firmenseiten, B2B-Portale |
| EV (Extended Validation) | Strenge Prüfung: Firma, Adresse, Rechtsstatus | Tage bis Wochen | Banken, grosse Online-Shops |
Let’s Encrypt – kostenlos und automatisch
Let’s Encrypt ist eine gemeinnützige CA, die seit 2015 kostenlose DV-Zertifikate ausstellt. Die Zertifikate sind 90 Tage gültig und werden über das ACME-Protokoll automatisch erneuert.
Der Standard-Client heisst Certbot. Auf einem Linux-Server mit nginx:
# Certbot installieren (Ubuntu/Debian)
sudo apt install certbot python3-certbot-nginx
# Zertifikat ausstellen und nginx automatisch konfigurieren
sudo certbot --nginx -d firma.ch -d www.firma.ch
# Automatische Erneuerung testen (läuft per cron/systemd-timer)
sudo certbot renew --dry-run
Für Windows-Server oder IIS gibt es win-acme (früher letsencrypt-win-simple):
# win-acme herunterladen und ausführen – interaktiver Wizard
.\wacs.exe
Zertifikate prüfen – Befehle für den Alltag
Zertifikat einer Website prüfen (OpenSSL)
# Ablaufdatum, Aussteller, Subject prüfen
openssl s_client -connect firma.ch:443 -servername firma.ch 2>/dev/null | openssl x509 -noout -text
# Nur Ablaufdatum
openssl s_client -connect firma.ch:443 -servername firma.ch 2>/dev/null | openssl x509 -noout -dates
# Auf Windows mit PowerShell (2>/dev/null ersetzen durch 2>$null)
openssl s_client -connect firma.ch:443 -servername firma.ch 2>$null | openssl x509 -noout -dates
Ablaufdatum per PowerShell prüfen (ohne OpenSSL)
# Zertifikat einer Website abrufen und Ablaufdatum anzeigen
$url = "https://firma.ch"
$request = [Net.HttpWebRequest]::Create($url)
$request.AllowAutoRedirect = $true
try {
$response = $request.GetResponse()
$cert = $request.ServicePoint.Certificate
$expiry = [DateTime]::Parse($cert.GetExpirationDateString())
$daysLeft = ($expiry - (Get-Date)).Days
Write-Host "Zertifikat läuft ab: $expiry"
Write-Host "Noch $daysLeft Tage gültig"
$response.Close()
} catch {
Write-Host "Fehler: $_"
}
Lokale Zertifikatsdatei prüfen
# PEM-Format
openssl x509 -in zertifikat.crt -noout -text
# PFX/P12 importieren und prüfen
openssl pkcs12 -in zertifikat.pfx -nokeys -clcerts | openssl x509 -noout -dates
CSR erstellen (für kostenpflichtige Zertifikate)
# 1. Privaten Schlüssel generieren (4096 Bit RSA)
openssl genrsa -out firma.ch.key 4096
# 2. CSR erstellen – du wirst nach Firmeninfos gefragt
openssl req -new -key firma.ch.key -out firma.ch.csr
# 3. CSR-Inhalt prüfen, bevor du ihn an die CA schickst
openssl req -in firma.ch.csr -noout -text
Windows-Zertifikatspeicher verwalten
Windows verwaltet Zertifikate in eigenen Speichern. Das ist relevant für interne CAs, Clientzertifikate und Code-Signing.
certmgr.msc :: Zertifikate des aktuellen Benutzers
certlm.msc :: Zertifikate des lokalen Computers (braucht Admin-Rechte)
Mit PowerShell kannst du Zertifikate scripten:
# Alle persönlichen Zertifikate auflisten
Get-ChildItem -Path Cert:\LocalMachine\My
# Zertifikate filtern, die in den nächsten 30 Tagen ablaufen
$threshold = (Get-Date).AddDays(30)
Get-ChildItem -Path Cert:\LocalMachine\My |
Where-Object { $_.NotAfter -lt $threshold } |
Select-Object Subject, NotAfter, Thumbprint
# Zertifikat per Thumbprint entfernen
Remove-Item -Path "Cert:\LocalMachine\My\ABC123..."
Internes PKI für KMU – wann selbst signieren?
Für rein interne Systeme (intranet.firma.local, NAS-Weboberflächen, VPN-Endpunkte, RDP-Gateways) kannst du eine eigene CA betreiben. Vorteil: kostenlos, kein externes DNS nötig. Nachteil: Alle Clients müssen das Root-Zertifikat deiner CA als vertrauenswürdig importieren.
Typischer Weg per GPO (Group Policy):
- Auf einem Windows Server: “Active Directory Certificate Services” (AD CS) installieren
- Root-CA-Zertifikat exportieren
- Per GPO auf alle Domain-Clients verteilen:
Computer Configuration → Windows Settings → Security Settings → Public Key Policies → Trusted Root Certification Authorities
Das Thema hängt eng mit AD-Grundlagen und GPO-Grundlagen zusammen.
Häufige Fehler und Troubleshooting
| Fehlerbild | Ursache | Lösung |
|---|---|---|
ERR_CERT_DATE_INVALID | Zertifikat abgelaufen | Erneuern; Auto-Renewal prüfen |
ERR_CERT_AUTHORITY_INVALID | CA nicht vertrauenswürdig (z.B. selbst signiert) | Root-CA-Zertifikat importieren |
ERR_CERT_COMMON_NAME_INVALID | Domain stimmt nicht mit CN/SAN überein | Neues Zertifikat für die korrekte Domain ausstellen |
SEC_ERROR_OCSP_INVALID_SIGNING_CERT | OCSP-Stapling Problem | OCSP-Konfiguration am Server prüfen |
| Zertifikatskette unvollständig | Intermediate-CA fehlt in der Konfiguration | Intermediate-Zertifikat in der Server-Config einbinden |
| Mixed Content Warnung | HTTP-Ressourcen auf HTTPS-Seite | Alle internen Links/Ressourcen auf HTTPS umstellen |
Tool-Tipp für Diagnose: SSL Labs Server Test gibt dir eine detaillierte Bewertung deiner TLS-Konfiguration (Protokollversionen, Cipher Suites, Chain, HSTS etc.) – kostenlos und ohne Installation.
Zusammenhang mit anderen Themen
SSL/TLS-Zertifikate sind kein isoliertes Thema. Du begegnest ihnen überall:
- VPN: Zertifikate authentifizieren VPN-Clients und -Server → VPN-Grundlagen
- RDP-Gateway: TLS schützt die Remote-Desktop-Verbindung → RDP-Grundlagen
- Netzwerkkommunikation allgemein: Port 443 ist der Standard für HTTPS → TCP/IP-Grundlagen
- IT-Security im KMU-Kontext: Zertifikate sind ein wichtiger Baustein → IT-Security-Grundlagen KMU
Weiterlernen
- Cloudflare Learning: What is SSL? – Umfassende englischsprachige Erklärung mit Grafiken
- Cloudflare: What Happens in a TLS Handshake? – Deep Dive in den Handshake-Prozess
- Let’s Encrypt – Erste Schritte (deutsch) – Offizielle Dokumentation für die Einrichtung
- SSL Labs Server Test – Kostenloser Test deiner TLS-Konfiguration
- Microsoft Learn: TLS/SSL-Zertifikate in Azure App Service – Praktisches Beispiel für die Windows/Azure-Welt
- DigiCert: How TLS/SSL Certificates Work – Technisch detaillierte Erklärung vom grössten kommerziellen CA
Videos
Kommentare
Frage, Verbesserungsvorschlag oder eigene Erfahrung zu diesem Artikel? Schreib einen Kommentar. Neue Beiträge erscheinen nach kurzer Moderation.
- Lade Kommentare …