OpenSSL

Siehe auch

Der Parameter nodes steht für „No DES“ und erstellt Keys ohne Passwörter.

Warnung

Das auf RHEL 7 vorhandene Shell-Script /etc/pki/tls/certs/make-dummy-cert erstellt CA-Zertifikate mit X509v3 Basic Constraints: CA:TRUE Extension. Solche Zertifikate lassen sich in Apache nicht (mehr) als Zertifikat für einen Virtual Host nutzen, der Apache bricht dann unter Umständen den Reload mit SSL-Fehlern ab (AH01906: localhost:443:0 server certificate is a CA certificate (BasicConstraints: CA == TRUE !?)).

Diese Art Zertifikate entstehen, wenn folgende Parameter verwendet werden: openssl req -newkey rsa:2048 -keyout /etc/pki/tls/private/test.key -nodes -x509 -days 365 -out /etc/pki/tls/certs/test.pem (sehr viele Anleitungen im Internet nutzen OpenSSL genau so). Unsere Anleitung unten zeigt, wie man „echte“ self-signed Client-Zertifikate erzeugt.

DH Key erstellen

Wird für diverse Software wie OpenVPN & Co. benötigt. DH-Schlüssel werden zur Secret-Aushandlung über eine unsichere Verbindung verwendet, und können und sollten beispielsweise 1x pro Monat automatisch neu generiert werden.

openssl dhparam -out dh4096.pem 4096

Self-signed root-Zertifikat (CA Certificate) erstellen

Das hier erstellte CA-Zertifikat gilt 5 Jahre.

SUBJECT_CA="/C=CH/ST=Zurich/O=Linuxfabrik/OU=Secure Services/CN=Linuxfabrik's Self-signed RootCA"

openssl req -x509 \
    -days 1825 \
    -keyout /etc/pki/tls/private/rootCA.key \
    -new \
    -newkey rsa:4096 \
    -nodes \
    -out /etc/pki/tls/certs/rootCA.pem \
    -sha384 \
    -subj "$SUBJECT_CA"

chmod 0400 /etc/pki/tls/private/rootCA.key
chown root:root /etc/pki/tls/private/rootCA.key

Self-Signed Zertifikat erstellen

Self-Signed Zertifikat erstellen, und von eigener CA signieren lassen.

Das Zertifikat kommt ohne Passwort daher, sinnvoll z.B. für einen Web- oder DB-Server.

1.) Private Key (RSA 4096 bit) und CSR erstellen:

SERVERNAME='localhost'
SUBJECT="/C=CH/ST=Zurich/O=Linuxfabrik/CN=$SERVERNAME"

openssl req \
    -keyout /etc/pki/tls/private/$SERVERNAME.key \
    -newkey rsa:4096 \
    -nodes \
    -out $SERVERNAME.csr \
    -sha384 \
    -subj "$SUBJECT"

chmod 0400 /etc/pki/tls/private/$SERVERNAME.key
chown root:root /etc/pki/tls/private/$SERVERNAME.key

2.) Self-Signed-Zertifikat mit 90 Tagen Laufzeit erstellen und von eigener CA signieren lassen:

openssl x509 \
    -CA /etc/pki/tls/certs/rootCA.pem \
    -CAcreateserial \
    -CAkey /etc/pki/tls/private/rootCA.key \
    -days 90 \
    -in $SERVERNAME.csr \
    -out /etc/pki/tls/certs/$SERVERNAME.pem \
    -req \
    -sha384

Zertifikate überprüfen/ansehen

Chain überprüfen:

CAFILE=/path/to/chain.pem

openssl verify $CAFILE

Zertifikat überprüfen:

CERT=/path/to/mycert.pem

openssl x509 \
    -in $CERT \
    -noout \
    -text

Private Key überprüfen:

PRIVKEY=/path/to/priv.key

openssl rsa \
     -check \
    -in $PRIVKEY

CSR überprüfen:

CERT=/path/to/mycert.pem

openssl req \
    -in $CERT \
    -nameopt sep_multiline \
    -noout \
    -verify

Zertifikate umwandeln

PKCS#12 (.pfx) in PEM-Formate (CA-Zertifikate und Private Key) exportieren:

openssl pkcs12 -info -in INFILE.p12 -nodes

# if you get errors like "Error outputting keys and certificates, envelope default library context, Algorithm (RC2-40-CBC : 0), Properties ()"
openssl pkcs12 -info -in INFILE.p12 -nodes -legacy

Built on 2024-04-18