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 2023-09-21