Funktionsweise und Erstellung eines SSL-Zertifikats
Inhaltsverzeichnis
Funktionsweise und Erstellung eines SSL-Zertifikats #
1. Was ist ein SSL/TLS-Zertifikat? #
Ein SSL/TLS-Zertifikat ist ein digitaler Nachweis über die Identität einer Website oder eines Servers.
Es bestätigt, dass der öffentliche Schlüssel, den ein Server beim Aufbau einer HTTPS-Verbindung präsentiert, tatsächlich zu der angegebenen Domain gehört.
Damit wird sichergestellt:
- Vertraulichkeit: Daten zwischen Client und Server werden verschlüsselt.
- Integrität: Daten können nicht unbemerkt verändert werden.
- Authentizität: Der Nutzer weiß, dass er mit dem richtigen Server spricht.
2. Der Aufbau eines Zertifikats #
Ein Zertifikat enthält u. a.:
| Feld | Bedeutung |
|---|---|
| Subject (CN) | Domainname, z. B. example.com |
| Issuer | Die ausstellende Zertifizierungsstelle (CA) |
| Public Key | Öffentlicher Teil des Schlüsselpaares |
| Validity | Gültigkeitszeitraum (z. B. 1 Jahr) |
| Signature | Digitale Signatur der CA |
3. Der Prozess im Überblick #
┌────────────┐ ┌──────────────────────┐ ┌──────────────────────┐
│ Betreiber │ CSR → │ Zertifizierungsstelle│ ← OK │ Browser / Client │
└────┬───────┘ └────────────┬─────────┘ └────────────┬─────────┘
│ │ │
│ (1) Key + CSR erstellen │ │
│─────────────────────────────▶│ │
│ │ │
│ (2) Prüfung der Domain│ │
│ │ │
│ │─────────────┐ │
│ │ Zertifikat │ │
│◀─────────────────────────────│ signieren │ │
│ │─────────────┘ │
│ │ │
│ (3) Zertifikat einbinden und konfigurieren │
│──────────────────────────────────────────────────────────────▶│
│ │ │
4. Schritt-für-Schritt: Erstellung und Bestätigung #
(1) Schlüsselpaar & CSR erstellen #
Ein CSR (Certificate Signing Request) enthält den öffentlichen Schlüssel und Identitätsdaten.
Der private Schlüssel bleibt geheim und wird niemals an die CA übermittelt.
# Privaten Schlüssel erzeugen
openssl genrsa -out server.key 4096
# CSR erzeugen
openssl req -new -key server.key -out server.csr
Beispielhafte Angaben:
Country Name (2 letter code) [DE]:
State or Province Name (full name) [Niedersachsen]:
Organization Name (e.g., company) [ITC Embedded Systems UG]:
Common Name (e.g. server FQDN) [example.com]:
(2) Zertifikat bei CA einreichen #
Man sendet den CSR an eine Zertifizierungsstelle (CA).
Diese prüft die Identität – z. B. durch:
- E-Mail-Verifikation (z. B. admin@example.com)
- DNS-Eintrag (
_acme-challenge.example.com) - HTTP-Datei auf dem Server (
/.well-known/acme-challenge/...)
Ergebnis: eine signierte Zertifikatsdatei (server.crt).
(3) Zertifikat installieren #
Auf einem Webserver wie nginx oder apache werden beide Dateien eingebunden:
server {
listen 443 ssl;
server_name example.com;
ssl_certificate /etc/ssl/certs/server.crt;
ssl_certificate_key /etc/ssl/private/server.key;
}
5. Verlängerung (Renewal) #
Zertifikate haben eine begrenzte Lebensdauer (z. B. 90 Tage bei Let’s Encrypt).
Ablauf:
- Neuer CSR mit demselben privaten Schlüssel oder einem neuen Schlüssel.
- Wiederholung der Validierung (meist automatisch).
- Neues Zertifikat installieren.
Bei Let’s Encrypt geschieht das automatisiert über certbot:
sudo certbot renew
6. Zusammenfassung #
| Schritt | Werkzeug / Akteur | Ergebnis |
|---|---|---|
| 1 | openssl |
Private Key + CSR |
| 2 | Zertifizierungsstelle (CA) | Signiertes Zertifikat |
| 3 | Server-Admin | Installation und HTTPS-Konfiguration |
| 4 | Automatisierter Prozess | Regelmäßige Verlängerung |
7. Kurzer Blick „unter die Haube“ #
Bei jeder HTTPS-Verbindung:
- Browser fordert Zertifikat vom Server an.
- Er prüft:
- Gültigkeitszeitraum
- Signatur der CA
- Domainname
- Danach wird ein symmetrischer Sitzungsschlüssel ausgehandelt.
Nur dieser wird für die laufende Verbindung genutzt (Performance).
Tipp:
Selbstsignierte Zertifikate kann man mitopensslebenfalls erzeugen.
Diese sind technisch gleichwertig, aber nicht vertrauenswürdig für Browser,
da sie keine CA-Signatur enthalten. Wenn der Server allerdings eh nur im eigenen lokalen Umfeld betrieben wird, ist die Frage gestattet, wer vertrauenswürdiger ist: eine externe ¨Authorität, oder das eigene Unternehmen.
openssl req -x509 -new -nodes -key server.key -sha256 -days 365 -out selfsigned.crt
Weiterführend: