OpenSSL-Befehle
Prüfen, ob Zertifikat zum Private Key passt
Public Key aus Private Key berechnen (funktioniert für RSA und ECC):
openssl pkey -in <privatekeyfile> -pubout
Public Key aus Zertifikat extrahieren:
openssl x509 -in <certificatefile> -noout -pubkey
Wenn beide Public Keys übereinstimmen, passt der Private Key zum Zertifikat (und umgekehrt)
Zertifikate verifizieren
openssl verify -CAfile <(cat <INTERMEDIATE_CA> <CA_CERT>) <CERT_TO_CHECK>
Informationen eines Zertifikats anzeigen
openssl x509 -in <CERT> -text -noout
In anderes Format umwandeln
PKCS#12 ⇒ PEM
openssl pkcs12 -in <input.p12> -out <output.pem> -clcerts
PEM ⇒ DER
openssl x509 -outform der -in <input.pem> -out <output.der>
Inhalt eines PKCS#12-Container auflisten
openssl pkcs12 -in <pkcs12_file> -info
Zertifikate aus PKCS#12-Container extrahieren
openssl pkcs12 -in <pkcs12_file> -clcerts -nokeys -out <certificate_file>
Privaten Schlüssel aus PKCS#12-Container extrahieren
openssl pkcs12 -in <pkcs12_file> -nocerts -out <private_key_file>
PKCS#12-Container erzeugen
Erzeugt einen neuen PKCS#12-Container, der einen privaten Schlüssel und das zugehörige Zertifikat beinhaltet
openssl pkcs12 -in <certificate> -inkey <private_key> -export -out <out_file>
Elliptic Curve Cryptography (ECC)
Liste der unterstützten Kurvenparameter
openssl ecparam -list_curves
Erstellung eines ECC-Private-Key (hier prime256v1 als Kurvenparameter)
openssl ecparam -name prime256v1 -genkey -noout -out privkey.pem
Public-Key generieren
openssl ec -in privkey.pem -pubout -out pubkey.pem
ECDSA-SHA256-Signatur erstellen
openssl dgst -sha256 -sign privkey.pem input.dat > signature.der
… und überprüfen
openssl dgst -sha256 -verify pubkey.pem -signature signature.der input.dat
Verbindung zu TLS-Server testen (Handshake)
openssl s_client -connect <HOST>:<PORT> -CAfile <CA_FILE> -key <KEY_FILE> -cert <CERT_FILE> -state
Die Parameter -CAfile
, -key
und -cert
sind optional.
Test-TLS-Server
openssl s_server -accept <PORT> -cert <CERT_FILE> -key <KEY_FILE> -CAfile <CA_FILE> -Verify <CERT_CHAIN_DEPTH>
Der Parameter -Verify
ist optional, er erzwingt Client-Authentication.