linux-security security encryption openssl certificates pki tls

OpenSSL: Certificate Management (Artikel 319)

Beherrschung von OpenSSL zur Zertifikatsverwaltung. Erfahren Sie alles über RSA vs. ECC, die Erstellung von CSRs und die Analyse von Zertifikatsketten auf der Kommandozeile.

# OpenSSL Mastery: Kryptografie auf der Kommandozeile

TL;DR / Management Summary Ohne OpenSSL gibt es kein HTTPS, kein VPN und kein sicheres Wi-Fi. Es ist das Schweizer Taschenmesser für TLS/SSL-Zertifikate. Ein Senior Admin muss nicht nur wissen, wie man einen CSR (Certificate Signing Request) erstellt, sondern auch, wie man Zertifikatsketten validiert, Formate konvertiert und die Stärke von Schlüsseln (RSA vs. ECC) bewertet. Dieses Modul liefert die nötigen Befehle, um in der täglichen PKI-Arbeit fehlerfrei zu agieren.


# 1. Einführung & Architektur

Die Bausteine der PKI.

Ein Zertifikat ist ein digitaler Ausweis. OpenSSL verwaltet den gesamten Lebenszyklus:

  1. Private Key: Ihr Geheimnis (darf den Server nie verlassen!).
  2. CSR: Der Antrag für eine Zertifizierungsstelle (CA).
  3. Certificate: Das vom CA signierte Dokument.

# Der Zertifikats-Stack (Mermaid)

graph TD
    A[Admin] -->|1. Generate| B[Private Key: .key]
    B -->|2. Create| C[CSR: .csr]
    C -->|3. Send to| D[Certificate Authority: CA]
    D -->|4. Sign| E[Public Certificate: .crt / .pem]
    E --> F[Web Server / VPN]
    B --> F

# 2. Praxis: Zertifikate generieren

Vom Antrag zum SSL-Schutz.

# 1. Private Key & CSR erstellen (Der moderne Weg: ECC)

ECC (Elliptic Curve) ist bei gleicher Sicherheit deutlich schneller und kleiner als RSA.

openssl ecparam -name prime256v1 -genkey -noout -out server.key
openssl req -new -key server.key -out server.csr

# 2. Self-Signed Zertifikat (Für interne Tests)

openssl req -x509 -newkey rsa:4096 -keyout key.pem -out cert.pem -sha256 -days 365 -nodes

# 3. Analyse & Validierung

In die Zertifikate schauen.

Niemals ein Zertifikat einspielen, ohne es vorher geprüft zu haben.

# Inhalt eines Zertifikats lesen

openssl x509 -in cert.pem -text -noout | grep -E "Subject:|Issuer:|Not After"

# Zertifikat und Key abgleichen

Passen Key und Cert zusammen? (Die Modulus-Hashes müssen identisch sein).

openssl x509 -noout -modulus -in cert.pem | openssl md5
openssl rsa -noout -modulus -in key.pem | openssl md5

# 4. Day-2 Operations: Format-Konvertierung

Die Sprachen der Systeme.

Unterschiedliche Systeme brauchen unterschiedliche Formate.

  • PEM to PKCS#12 (PFX): Für Windows/IIS.
    openssl pkcs12 -export -out cert.pfx -inkey server.key -in server.crt
  • PEM to DER: Für Java oder spezifische Hardware.
    openssl x509 -outform der -in cert.pem -out cert.der

# 5. Troubleshooting & “War Stories”

Wenn die Kette bricht.

# Story 1: “Das fehlende Intermediate”

Symptom: Der Webserver liefert im Browser einen SSL-Fehler (“Untrusted”), obwohl das Zertifikat korrekt gekauft und installiert wurde. Ursache: Das Zertifikat der Zwischen-CA (Intermediate) fehlt in der Konfiguration. Browser können die Kette zum Root-Zertifikat nicht schließen. Lösung: Nutzen Sie den Certificate Chain Checker: openssl s_client -connect myapp.com:443 -showcerts. Bündeln Sie Ihr Zertifikat und das Intermediate-File in einer Datei (Fullchain).

# Story 2: “Der RSA-1024 Schock”

Symptom: Ein Security-Scan meldet “Weak Key Exchange” auf einem alten Legacy-Server. Ursache: Der Server nutzt noch 1024-Bit RSA Schlüssel, die heute als knackbar gelten. Lösung: Erneuern Sie alle Schlüssel mit mindestens RSA 3072 oder wechseln Sie direkt zu ECDSA (P-256).


# 6. Fazit & Empfehlung

  • Wahl: Nutzen Sie ECC für neue Projekte. Es schont die CPU bei mobilen Clients.
  • Security: Schützen Sie Private Keys immer mit chmod 400.
  • Wartung: Nutzen Sie Skripte, um das Ablaufdatum (Not After) Ihrer Zertifikate regelmäßig zu prüfen.

# Anhang: Cheatsheet

Aufgabe Befehl
CSR erstellen openssl req -new -key <key> -out <csr>
PEM Info anzeigen openssl x509 -in <file> -text -noout
Ablaufdatum prüfen openssl x509 -enddate -noout -in <file>
Remote Check openssl s_client -connect <host>:443
Private Key erstellen openssl genrsa -out server.key 4096
Fingerprint sehen openssl x509 -noout -fingerprint -in <file>
PKCS#12 entpacken openssl pkcs12 -in <file>.pfx -nodes
DH-Parameter bauen openssl dhparam -out dhparam.pem 4096