OpenSSL-Befehle: Zertifikate, CSR und TLS

OpenSSL-Befehle zum Kopieren: Schlüssel und CSR erstellen, Zertifikat anzeigen, Ablaufdatum prüfen, PEM, DER und PKCS12 umwandeln, TLS mit s_client testen.

50 Einträge

Schlüssel erzeugen und prüfen

openssl genpkey -algorithm RSA -pkeyopt rsa_keygen_bits:3072 -out key.pemRSA-Schlüssel mit 3072 Bit erzeugen
openssl genpkey -algorithm EC -pkeyopt ec_paramgen_curve:P-256 -out ec-key.pemECDSA-Schlüssel auf der Kurve P-256
openssl genpkey -algorithm ED25519 -out ed-key.pemEd25519-Schlüssel
openssl pkey -in key.pem -pubout -out pub.pemÖffentlichen Schlüssel aus dem privaten ableiten
openssl pkey -in key.pem -text -nooutSchlüssel mit allen Parametern anzeigen
openssl pkey -in key.pem -check -nooutPrivaten Schlüssel auf Konsistenz prüfen
openssl pkey -in key.pem -aes256 -out key-geschuetzt.pemPrivaten Schlüssel mit Passwort verschlüsseln
openssl pkey -in key-geschuetzt.pem -out key.pemPasswort vom Schlüssel entfernen (fragt das alte Passwort ab)
openssl pkcs8 -topk8 -nocrypt -in alt.pem -out key-pkcs8.pemSchlüssel ins PKCS#8-Format umwandeln
openssl ecparam -list_curvesVerfügbare elliptische Kurven auflisten

CSR erstellen

openssl req -new -key key.pem -out anfrage.csropenssl CSR erstellen mit vorhandenem Schlüssel; Felder werden abgefragt
openssl req -new -newkey rsa:3072 -noenc -keyout key.pem -out anfrage.csr -subj "/CN=example.com" -addext "subjectAltName=DNS:example.com,DNS:www.example.com"Schlüssel und CSR mit SAN in einem Schritt (OpenSSL 3; in 1.1.1 -nodes statt -noenc)
openssl req -in anfrage.csr -text -noout -verifyCSR anzeigen und Signatur prüfen

Zertifikate anzeigen und prüfen

openssl x509 -in cert.pem -text -nooutopenssl Zertifikat anzeigen: alle Felder lesbar
openssl x509 -in cert.pem -noout -subject -issuer -datesInhaber, Aussteller und Gültigkeit
openssl x509 -in cert.pem -noout -enddateNur das Ablaufdatum
openssl x509 -in cert.pem -noout -checkend 2592000Läuft das Zertifikat in den nächsten 30 Tagen ab? Exit-Code 1 heißt ja
openssl x509 -in cert.pem -noout -fingerprint -sha256SHA-256-Fingerprint
openssl x509 -in cert.pem -noout -ext subjectAltNameNur die SAN-Einträge (OpenSSL 3)
openssl verify -CAfile root.pem -untrusted zwischen.pem cert.pemZertifikatskette gegen eine Wurzel prüfen
openssl x509 -in cert.pem -noout -pubkey | openssl sha256Prüfwert des öffentlichen Schlüssels im Zertifikat; mit dem Wert des Schlüssels vergleichen
openssl pkey -in key.pem -pubout | openssl sha256Gleicher Prüfwert aus dem privaten Schlüssel: Stimmen beide überein, gehören Schlüssel und Zertifikat zusammen

Zertifikate ausstellen

openssl req -x509 -newkey rsa:3072 -noenc -keyout key.pem -out cert.pem -days 365 -subj "/CN=localhost" -addext "subjectAltName=DNS:localhost,IP:127.0.0.1"Selbstsigniertes Zertifikat für Tests
openssl req -x509 -new -key ca.key -out ca.pem -days 3650 -subj "/CN=Test-CA"Eigene Test-CA anlegen
openssl x509 -req -in anfrage.csr -CA ca.pem -CAkey ca.key -CAcreateserial -out cert.pem -days 365 -copy_extensions copyCSR mit eigener CA signieren und Erweiterungen wie SAN übernehmen (OpenSSL 3)

Formate umwandeln

openssl x509 -in cert.pem -outform der -out cert.derPEM in DER umwandeln (binär)
openssl x509 -in cert.der -inform der -out cert.pemDER in PEM umwandeln
openssl pkcs12 -export -inkey key.pem -in cert.pem -certfile kette.pem -out bundle.p12PKCS12-Datei (.p12/.pfx) aus Schlüssel, Zertifikat und Kette erstellen
openssl pkcs12 -in bundle.p12 -noenc -out alles.pemPKCS12 in PEM mit Schlüssel ohne Passwort (früher -nodes)
openssl pkcs12 -in bundle.p12 -nokeys -out cert.pemNur die Zertifikate aus einer PKCS12-Datei
openssl pkcs12 -in alt.pfx -legacy -noenc -out alles.pemAlte PFX-Dateien mit RC2 oder 3DES in OpenSSL 3 öffnen
openssl pkcs7 -in kette.p7b -print_certs -out kette.pemPKCS#7-Kette (.p7b) in PEM umwandeln

TLS-Verbindungen testen

openssl s_client -connect example.com:443 -servername example.comopenssl s_client: TLS-Verbindung aufbauen und Zertifikat anzeigen
openssl s_client -connect example.com:443 -servername example.com -showcerts </dev/nullGesamte Kette des Servers ausgeben
openssl s_client -connect example.com:443 -servername example.com </dev/null 2>/dev/null | openssl x509 -noout -datesGültigkeit des Serverzertifikats direkt abfragen
openssl s_client -connect example.com:443 -tls1_3Nur TLS 1.3 zulassen; -tls1_2 entsprechend
openssl s_client -connect example.com:443 -alpn h2Prüfen, ob der Server HTTP/2 per ALPN anbietet
openssl s_client -starttls smtp -connect mail.example.com:587STARTTLS bei SMTP testen; auch imap, pop3, ftp
openssl ciphers -v 'HIGH:!aNULL'Cipher-Suites anzeigen, die ein Ausdruck auswählt

Hashes, Signaturen, Zufall

openssl dgst -sha256 datei.isoSHA-256-Prüfsumme einer Datei
openssl dgst -sha256 -hmac geheim datei.txtHMAC-SHA256 mit einem Schlüssel
openssl dgst -sha256 -sign key.pem -out sig.bin datei.txtDatei signieren
openssl dgst -sha256 -verify pub.pem -signature sig.bin datei.txtSignatur prüfen
openssl enc -aes-256-cbc -pbkdf2 -salt -in datei -out datei.encDatei mit Passwort verschlüsseln; -d entschlüsselt
openssl rand -hex 3232 zufällige Bytes als Hex, etwa für Secrets
openssl rand -base64 3232 zufällige Bytes als Base64
openssl base64 -in datei.bin -out datei.b64Base64 kodieren; mit -d dekodieren
openssl passwd -6Passwort-Hash im SHA-512-crypt-Format ($6$), wie in /etc/shadow
openssl version -aVersion, Build-Optionen und Konfigurationsverzeichnis
openssl list -digest-algorithmsVerfügbare Hash-Verfahren auflisten

Alles läuft in Ihrem Browser. Eingaben verlassen Ihr Gerät nicht.

OpenSSL sicher nutzen

Dieser Spickzettel enthält 50 OpenSSL-Befehle für die häufigsten Aufgaben: Schlüssel erzeugen, openssl CSR erstellen, openssl Zertifikat anzeigen und prüfen, Formate wie PEM in DER oder PKCS12 umwandeln, TLS-Verbindungen mit openssl s_client testen sowie Hashes, Signaturen und Zufallswerte. Die Befehle sind für OpenSSL 3 geschrieben; Unterschiede zu 1.1.1 sind angegeben.

PEM ist das Textformat mit -----BEGIN …------Zeilen, DER dieselbe Struktur binär. PKCS12-Dateien (.p12, .pfx) bündeln Zertifikat, Kette und privaten Schlüssel passwortgeschützt, wie es Windows-Server, IIS oder Java-Keystores oft verlangen. Ein häufiger Prüfschritt: Gehören Zertifikat und Schlüssel zusammen? Dazu vergleichen Sie den Prüfwert des öffentlichen Schlüssels aus beiden Dateien.

Geben Sie -servername bei s_client immer mit an, sonst liefert ein Server mit mehreren Domains womöglich das falsche Zertifikat. Private Schlüssel ohne Passwort (-noenc) gehören in Dateien, die nur der Dienst lesen darf. Zum Lesen der Ergebnisse helfen der Zertifikat-Dekoder und der CSR-Dekoder, die alles im Browser auswerten.

Anleitung: OpenSSL-Befehle in 4 Schritten

  1. Suchen Sie nach der Aufgabe, etwa „CSR“, „PKCS12“ oder „Ablaufdatum“.
  2. Kopieren Sie den Befehl mit „Kopieren“ und passen Sie Dateinamen und Domain an.
  3. Führen Sie ihn im Terminal aus; unter Windows zum Beispiel in Git Bash oder WSL.
  4. Prüfen Sie das Ergebnis, etwa mit dem Zertifikat-Dekoder dieser Seite.

Typische Anwendungsfälle

  • Einen Schlüssel und eine CSR für ein neues TLS-Zertifikat erzeugen.
  • Ablaufdatum, SAN-Einträge und Kette eines Servers per s_client prüfen.
  • Zertifikate zwischen PEM, DER und PKCS#12 umwandeln, etwa für Windows-Server oder Java.
  • Prüfen, ob Zertifikat und privater Schlüssel zusammengehören.
Fragen

Häufige Fragen

Wie prüfe ich das Ablaufdatum eines Zertifikats?

Für eine Datei mit openssl x509 -in cert.pem -noout -enddate. Für einen Server mit openssl s_client -connect host:443 -servername host </dev/null | openssl x509 -noout -dates. In Skripten meldet -checkend SEKUNDEN per Exit-Code, ob das Zertifikat bald abläuft.

Wie wandle ich PFX in PEM um?

Mit openssl pkcs12 -in datei.pfx -noenc -out alles.pem. Nur die Zertifikate erhalten Sie mit -nokeys, nur den Schlüssel mit -nocerts. Bei alten PFX-Dateien in OpenSSL 3 hilft zusätzlich -legacy.

Wie erstelle ich eine CSR mit mehreren Domains?

Mit -addext "subjectAltName=DNS:example.com,DNS:www.example.com" beim Befehl openssl req -new. Browser werten nur die SAN-Einträge aus, nicht mehr den Common Name allein.

Welche Schlüssellänge ist sinnvoll?

Für RSA gelten 3072 Bit als gute Wahl für neue Schlüssel; 2048 Bit sind noch verbreitet. Bei ECDSA bietet P-256 eine vergleichbare Sicherheit bei deutlich kürzeren Schlüsseln. Richtlinien Ihrer Organisation oder des BSI gehen vor.

Welche OpenSSL-Version habe ich?

openssl version zeigt sie an, openssl version -a liefert zusätzlich Build-Optionen und das Konfigurationsverzeichnis. Die Befehle hier sind für OpenSSL 3; abweichende Optionen älterer Versionen sind angegeben.

Ist -nodes in OpenSSL 3 noch gültig?

Ja, -nodes funktioniert weiter, gilt aber als veraltet. OpenSSL 3 nennt die Option -noenc. Beide bewirken, dass der private Schlüssel ohne Passwort gespeichert wird; schützen Sie die Datei dann über Dateirechte.

Weitere Werkzeuge

Das könnte auch helfen

Alle 558 Werkzeuge