Wichtige OpenSSL-Befehle

Aus Knowledgebase
Wechseln zu: Navigation, Suche

OpenSSL ist ein mächtiges Werkzeug. Meistens wird es selten gebraucht und daher sind notwendige Befehle alles andere als Routine.

Wenn man auf der Kommandozeile die Shellvariable NAME passend setzt, sind die Kommandos quasi fertig für direktes Copy-Paste.

cd /etc/ssl
NAME=server

Bequemer geht's noch mit

  • -passin file:/path/to/file, in der Datei steht dann das Passwort. Gültig für Request Signieren, Konvertieren nach pkcs12 und Revoken,
  • Vorausfüllen der req_distinguished_name-Strings in /etc/ssl/openssl.cnf mit _default-Werten.

Hier eine Übersicht.

Key/Request generieren

openssl req -nodes -new -out req/${NAME}Req.pem -keyout private/${NAME}Key.pem
chmod 640 private/${NAME}Key.pem

Request signieren

openssl ca -batch -in req/${NAME}Req.pem -out certs/${NAME}Cert.pem

Selfsigned

openssl req -x509 -nodes -days 3650 -new -out certs/${NAME}Cert.pem \
 -keyout private/${NAME}Key.pem

Konvertieren nach pkcs12

openssl pkcs12 -export -in certs/${NAME}Cert.pem -inkey private/${NAME}Key.pem \
  -CApath certs/ -passout pass:${NAME} -chain -out ${NAME}.p12

Konvertieren von pkcs12 nach PEM

openssl pkcs12 -in ${NAME}.p12 -out ${NAME}Cert.pem -clcerts -nokeys
openssl pkcs12 -in ${NAME}.p12 -out ${NAME}Key.pem -nocerts -nodes

Key verschlüsseln mit Passwort

openssl rsa -aes256 in private/${NAME}Key.pem -out ${NAME}Key-with-pass.pem

Revoken

openssl ca -revoke certs/${NAME}Cert.pem
find . -type f -a -name ${NAME}* -exec rm -v {} \;

Expiry checken

for CERT in /etc/ssl/certs/cacert.pem /etc/ssl/certs/*Cert.pem; do
  echo -n "${CERT} "
  date -d "`openssl x509 -in ${CERT} -noout -enddate |sed 's/^notAfter=//'`" '+%Y-%m-%d %H:%M:%S'
done |sort -n -k 2

Neue Root-CA

cat /dev/null > index.txt
echo 01 > crlnumber
mkdir crl newcerts req
openssl req -new -keyout private/cakey.pem -out careq.pem
openssl ca -create_serial -out certs/cacert.pem -days 3650 -batch \
  -keyfile private/cakey.pem -selfsign -extensions v3_ca -infiles careq.pem