Berny's Knowledgebase als Newsfeed

SSL-Zertifikat anfordern

Kurzanleitung

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.

PEM-Format anzeigen
openssl x509 -inform PEM -in <FILENAME> -text -noout
DER-Format anzeigen
openssl x509 -inform DER -in <FILENAME> -text -noout
Konvertieren von PEM in DER Format
openssl x509 -inform PEM -in <FILENAME> -outform DER -out <FILENAME>
Zertifikatsrequest anzeigen
openssl req -text -noout -in <FILENAME>

File wird dabei im PEM Format erwartet

Zertifikat gegen ein CA-File prüfen
openssl verify -CAfile <CA_CERTIFICATE_FILE> <FILENAME>
auf einem Server eingespielte Zertifikate anzeigen

(d. h. man verbindet sich als SSL-Client zu einem SSL-Server)

openssl s_client -host <HOSTNAME> -port <PORT>
als SSL-Server agieren

(d. h. man bindet einen Port im Listen-Modus und wartet auf Verbindungen von Clients)

openssl s_server -accept <PORT> -cert <FILENAME> -key <FILENAME>
Privaten Schlüssel ohne Passwort in eine Datei schreiben

(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.