OpenSSL Befehle

6 Kategorien
Die wichtigsten OpenSSL-Befehle für Zertifikate, Schlüssel und CSRs: openssl req · openssl x509 · openssl rsa · openssl s_client · openssl verify OpenSSL ist das Schweizer Taschenmesser für SSL/TLS. Diese Cheatsheet fasst die wichtigsten Befehle für die Erstellung, Konvertierung und Überprüfung von Zertifikaten und Schlüsseln zusammen.

Schlüsselverwaltung – Private Keys

genrsa · rsa · ec · pkcs8
openssl genrsa -out server.key 2048

Private Keys werden mit OpenSSL generiert und verwaltet. Die gebräuchlichsten Formate sind RSA (2048/4096 bit) und EC (Elliptic Curve) für moderne Anwendungen.

Schlüsselbefehle

Befehl Beschreibung
genrsa -out key.pem 2048 RSA-Schlüssel (2048 bit) ohne Passphrase
genrsa -aes256 -out key.pem 2048 RSA-Schlüssel mit Passphrase
ecparam -name prime256v1 -genkey -out key.pem EC-Schlüssel (P-256)
rsa -in key.pem -out key-nopass.pem Passphrase entfernen
rsa -in key.pem -text -noout Schlüssel anzeigen
pkcs8 -in key.pem -topk8 -nocrypt -out key.pk8 PKCS8-Format konvertieren
Beispiele
# RSA-Schlüssel mit Passphrase
openssl genrsa -aes256 -out server.key 2048
# Passphrase entfernen
openssl rsa -in server.key -out server-nopass.key
# EC-Schlüssel (Elliptic Curve)
openssl ecparam -name prime256v1 -genkey -out server-ec.key
# Schlüsselinhalt anzeigen
openssl rsa -in server.key -text -noout
Tipp: Für maximale Sicherheit verwenden Sie ECDSA (Elliptic Curve Digital Signature Algorithm) mit 256-bit Kurven. Sie bieten bei geringerer Schlüssellänge eine vergleichbare Sicherheit wie RSA 3072 bit.

CSR – Zertifikatsanfragen

req · csr · subject
openssl req -new -key server.key -out server.csr

CSR (Certificate Signing Request) wird an eine Certificate Authority (CA) gesendet, um ein signiertes Zertifikat zu erhalten. Er enthält den öffentlichen Schlüssel und die Identitätsinformationen.

CSR-Befehle

Befehl Beschreibung
req -new -key key.pem -out csr.pem CSR erstellen (interaktiv)
req -new -key key.pem -out csr.pem -subj "/CN=example.com" CSR mit direktem Subject
req -text -noout -verify -in csr.pem CSR überprüfen und anzeigen
req -new -newkey rsa:2048 -nodes -keyout key.pem -out csr.pem Schlüssel + CSR in einem Schritt
req -new -newkey ec:prime256v1 -nodes -keyout key.pem -out csr.pem EC-Schlüssel + CSR
req -in csr.pem -noout -subject Subject der CSR anzeigen
Beispiele
# CSR mit explizitem Subject (SAN nicht enthalten!)
openssl req -new -key server.key -out server.csr -subj "/C=DE/ST=Bayern/L=München/O=MyCompany/CN=example.com"
# CSR mit SAN (erfordert Konfigurationsdatei)
openssl req -new -key server.key -out server.csr -config openssl.cnf
# CSR überprüfen
openssl req -text -noout -verify -in server.csr
# Schlüssel + CSR in einem Befehl
openssl req -new -newkey rsa:2048 -nodes -keyout server.key -out server.csr
Tipp: Moderne Zertifikate benötigen Subject Alternative Names (SAN). Erstellen Sie eine OpenSSL-Konfigurationsdatei mit subjectAltName = DNS:example.com, DNS:www.example.com oder verwenden Sie Tools wie certbot.

Zertifikate – X.509 & CRT

x509 · req · crt
openssl x509 -in server.crt -text -noout

X.509-Zertifikate werden mit OpenSSL erstellt, signiert, überprüft und in verschiedene Formate konvertiert. Sie enthalten den öffentlichen Schlüssel, den Subject und die Signatur der CA.

Zertifikatsbefehle

Befehl Beschreibung
x509 -in cert.pem -text -noout Zertifikat anzeigen
x509 -in cert.pem -pubkey -noout Öffentlichen Schlüssel extrahieren
x509 -in cert.pem -startdate -enddate -noout Gültigkeitszeitraum anzeigen
x509 -in cert.pem -subject -noout Subject anzeigen
x509 -in cert.pem -issuer -noout Aussteller anzeigen
x509 -in cert.pem -fingerprint -noout Fingerprint (SHA1) anzeigen
req -x509 -newkey rsa:2048 -nodes -keyout key.pem -out cert.pem -days 365 Self-Signed Zertifikat erstellen
Beispiele
# Self-Signed Zertifikat erstellen
openssl req -x509 -newkey rsa:2048 -nodes -keyout server.key -out server.crt -days 365 -subj "/CN=example.com"
# Zertifikat anzeigen
openssl x509 -in server.crt -text -noout
# Gültigkeitsdauer prüfen
openssl x509 -in server.crt -startdate -enddate -noout
# Fingerprint (für Zertifikats-Pinning)
openssl x509 -in server.crt -fingerprint -noout
Tipp: Für Self-Signed Zertifikate im Testbetrieb sollten Sie trotzdem eine Konfigurationsdatei mit Subject Alternative Names (SAN) verwenden, da moderne Browser dies fordern.

Konvertierung – PEM ↔ DER ↔ PKCS12 ↔ PFX

x509 · pkcs12 · rsa
openssl pkcs12 -export -in cert.pem -inkey key.pem -out cert.pfx

Formatkonvertierung – OpenSSL kann Zertifikate und Schlüssel zwischen verschiedenen Formaten konvertieren: PEM (Base64), DER (binär), PKCS12 (PFX) und mehr.

Konvertierungsbefehle

Befehl Beschreibung
x509 -in cert.pem -out cert.der -outform DER PEM → DER (binär)
x509 -in cert.der -inform DER -out cert.pem DER → PEM
rsa -in key.pem -out key.der -outform DER RSA-Schlüssel PEM → DER
rsa -in key.der -inform DER -out key.pem RSA-Schlüssel DER → PEM
pkcs12 -export -in cert.pem -inkey key.pem -out cert.pfx PEM → PKCS12 (PFX)
pkcs12 -in cert.pfx -out cert.pem -nodes PKCS12 → PEM (mit Privatkey)
pkcs12 -in cert.pfx -out cert.pem -nokeys -clcerts PKCS12 → PEM (nur Zertifikat)
pkcs12 -in cert.pfx -out key.pem -nocerts -nodes PKCS12 → PEM (nur Privatkey)
Beispiele
# PEM → PFX (für IIS / Windows)
openssl pkcs12 -export -in server.crt -inkey server.key -out server.pfx -name "MyCertificate"
# PFX → PEM (alles in eine Datei)
openssl pkcs12 -in server.pfx -out server.pem -nodes
# PEM → DER (binär)
openssl x509 -in server.crt -out server.der -outform DER
# Zertifikat + Zwischenzertifikat in PKCS7
openssl crl2pkcs7 -nocrl -certfile server.crt -certfile intermediate.crt -out server.p7b
Tipp: PFX (PKCS12) wird häufig für Windows-Server (IIS) und für den Import in Browser benötigt. Das Format ist passwortgeschützt und enthält sowohl Zertifikat als auch Privatschlüssel.

Überprüfung – Zertifikate & Ketten validieren

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

Überprüfung – Prüft die Gültigkeit von Zertifikaten, die Zertifikatskette und die Vertrauenswürdigkeit. Mit s_client können Sie die TLS-Konfiguration eines Servers testen.

Verifizierungsbefehle

Befehl Beschreibung
verify -CAfile root.pem server.crt Zertifikat gegen Root-CA prüfen
verify -CAfile root.pem -untrusted inter.pem server.crt Mit Intermediate-CA prüfen
s_client -connect example.com:443 TLS-Verbindung aufbauen
s_client -connect example.com:443 -showcerts Alle Zertifikate anzeigen
s_client -connect example.com:443 -tls1_3 Mit TLS 1.3 verbinden
s_client -connect example.com:443 -servername example.com SNI verwenden
ocsp -issuer issuer.pem -cert server.crt -url http://ocsp.example.com OCSP-Status prüfen
Beispiele
# Zertifikatskette prüfen
openssl verify -CAfile root.pem -untrusted intermediate.pem server.crt
# TLS-Verbindung testen
openssl s_client -connect google.com:443 -showcerts
# Nur Protokollversion prüfen
openssl s_client -connect example.com:443 -tls1_2
# Zertifikat von Server herunterladen
openssl s_client -connect example.com:443 -showcerts 2>/dev/null | openssl x509 -out server.crt
# OCSP-Status prüfen
openssl ocsp -issuer intermediate.pem -cert server.crt -url http://ocsp.example.com -VAfile root.pem
Tipp: openssl s_client -connect ist das wichtigste Tool zur Fehlersuche bei SSL/TLS-Verbindungen. Damit können Sie Zertifikate, Cipher Suites und Verbindungsfehler direkt testen.

Server Konfiguration – SSL/TLS für Web- und Mailserver

nginx · apache · postfix · dovecot
ssl_certificate /etc/ssl/certs/server.crt; ssl_certificate_key /etc/ssl/private/server.key; ssl_trusted_certificate /etc/ssl/certs/chain.pem;

Server-Konfiguration – Die korrekte Einbindung von Zertifikaten und Schlüsseln in Webserver (Nginx, Apache) und Mailserver (Postfix, Dovecot) ist entscheidend für die Sicherheit.

Server-Konfigurationsbeispiele

Server Konfiguration
Nginx ssl_certificate, ssl_certificate_key, ssl_trusted_certificate
Apache SSLCertificateFile, SSLCertificateKeyFile, SSLCertificateChainFile
Postfix smtpd_tls_cert_file, smtpd_tls_key_file, smtpd_tls_CAfile
Dovecot ssl_cert, ssl_key, ssl_ca
HAProxy crt / ssl crt, crt-list
Beispiele
# Nginx SSL-Konfiguration
ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
ssl_trusted_certificate /etc/letsencrypt/live/example.com/chain.pem;
# Apache SSL-Konfiguration
SSLCertificateFile /etc/ssl/certs/server.crt
SSLCertificateKeyFile /etc/ssl/private/server.key
SSLCertificateChainFile /etc/ssl/certs/intermediate.crt
# Postfix SSL-Konfiguration
smtpd_tls_cert_file = /etc/ssl/certs/server.crt
smtpd_tls_key_file = /etc/ssl/private/server.key
smtpd_tls_CAfile = /etc/ssl/certs/ca-bundle.crt
Tipp: Verwenden Sie vollständige Zertifikatsketten (fullchain.pem) bei der Server-Konfiguration. So stellen Sie sicher, dass der Client alle benötigten Zwischenzertifikate erhält.

OpenSSL im Überblick

genrsa RSA-Schlüssel generieren
2048/4096 bit
req CSR & Self-Signed
Zertifikatsanfragen
x509 Zertifikate verwalten
Anzeigen, Konvertieren
pkcs12 PFX/PKCS12
Für Windows/IIS
s_client TLS-Verbindung testen
Fehlersuche
verify Zertifikatskette prüfen
Trust Chain

Quick Summary

genrsa
Schlüssel generieren
req -new
CSR erstellen
x509
Zertifikate anzeigen
pkcs12
Konvertierung
verify
Kette prüfen
s_client
TLS testen
openssl genrsa -out key.pem 2048 · openssl req -new -key key.pem -out csr.pem · openssl s_client -connect example.com:443