Berny’s Knowledgebase > Tools und Bibliotheken > OpenSSL
SSL-Zertifikat anfordern
siehe z. B. https://wiki.openssl.org/index.php/Command_Line_Utilities
am Beispiel eines Zertifikats für einen Webserver
cd /etc/httpd ls ssl.crt || mkdir ssl.crt ls ssl.csr || mkdir ssl.csr ls ssl.key || mkdir ssl.key export CERT=`hostname` echo $CERT umask 077 # Alternative 1 (empfohlen) openssl genrsa -out ssl.key/${CERT}.key 2048 # Alternative 2, nur falls /dev/random nicht genügend Zufall hergibt find / -size +10000k #file1 - file5 aus o. g. Liste openssl genrsa -rand file1:file2:...:file5 -out ssl.key/${CERT}.key 2048 # Ende Alternative 2 openssl req -new -key ssl.key/${CERT}.key -out ssl.csr/${CERT}.csr openssl x509 -req -days 1000 -in ssl.csr/${CERT}.csr -signkey ssl.key/${CERT}.key -out ssl.crt/${CERT}.crt
Zertifikate anzeigen und konvertieren
Es gibt zwei gängige Formate.
- PEM Format
-
base64 kodiert und ASCII lesbar
- DER Format
-
DER kodiert und nicht ASCII lesbar
Mit der Option -inform kann das Format angegeben werden.
openssl x509 -inform PEM -in <FILENAME> -text -noout
openssl x509 -inform DER -in <FILENAME> -text -noout
openssl x509 -inform PEM -in <FILENAME> -outform DER -out <FILENAME>
openssl req -text -noout -in <FILENAME>
File wird dabei im PEM Format erwartet
openssl verify -CAfile <CA_CERTIFICATE_FILE> <FILENAME>
(d. h. man verbindet sich als SSL-Client zu einem SSL-Server)
openssl s_client -host <HOSTNAME> -port <PORT>
(d. h. man bindet einen Port im Listen-Modus und wartet auf Verbindungen von Clients)
openssl s_server -accept <PORT> -cert <FILENAME> -key <FILENAME>
(sollte man nach Möglichkeit niemals anwenden)
openssl rsa -in server.key.encrypt -out server.key.decrypt
Zertifikate wiederrufen
Zum Thema, wie man eine Certificate Revocation List (CRL) aufsetzt, gibt es bereits einen sehr guten Artikel: https://jamielinux.com/docs/openssl-certificate-authority/certificate-revocation-lists.html
Die CRL wird dann beim Apache eingetragen als
SSLCARevocationFile
bzw. bei OpenVPN als
crl-verify
im Config-File.
Kostenlose SSL-Zertifikate
gibt es entweder bei CAcert.org, einer sehr engagierten Community
oder alternativ bei https://letsencrypt.org/ - einem Zusammenschluss von namhaften Organisationen und Unternehmen, die es sich zum Ziel gesetzt haben, möglichst weite Teile des Internets auf verschlüsselte Verbindungen zu bringen
Eine eigene Certificate Authority (CA) aufsetzen
zum Beispiel um ein OpenVPN zu nutzen, gelingt am schnellsten mit BooBoo Quick CA
Tutorial
Unter https://github.com/booboo-at-gluga-de/TLS4Developers_Workshop findet Ihr ein komplettes Tutorial, um TLS (SSL) und x.509 besser zu verstehen.
Praktische Übungen zum selbst ausprobieren, nicht nur für Software-Entwickler und Admins.