Nützliche Anwendungen für openssl

Umfassende Anleitung zu OpenSSL: Von Grundlagen, Benchmarking, Zertifikatsverwaltung bis zur Verschlüsselung und S/MIME.

Nützliche Anwendungen für openssl
Photo by Mauro Sbicego / Unsplash

Dieser Artikel bietet eine umfassende Anleitung zur Verwendung von OpenSSL für verschiedene kryptografische Aufgaben. Ich habe ihn so strukturiert, um Schritt für Schritt durch verschiedene Anwendungsfälle zu führen, von grundlegenden Abfragen bis hin zu komplexeren Konfigurationen.

OpenSSL Version und Befehlsübersicht

Um die installierte OpenSSL-Version zu ermitteln, kann der Befehl openssl version verwendet werden.

openssl version

Eine Übersicht über die verfügbaren Befehle erhält man mit openssl help.

openssl help

Eine Liste der unterstützten Cipher-Suiten liefert der Befehl openssl ciphers.

openssl ciphers

Benchmarking mit OpenSSL

Die Leistungsfähigkeit eines Systems kann mit OpenSSL getestet werden. Der Befehl openssl speed misst die Performance verschiedener kryptografischer Algorithmen auf dem lokalen System.

openssl speed

Für das Benchmarking von Remote-Verbindungen kann openssl s_client in Kombination mit openssl speed verwendet werden, um die Geschwindigkeit von SSL/TLS-Verbindungen zu testen.

Zertifikatsverwaltung

Ein selbstsigniertes Zertifikat kann mit folgendem Befehl erstellt werden:

openssl req -x509 -newkey rsa:4096 -keyout key.pem -out cert.pem -days 365 -nodes

Für die Erstellung eines Certificate Signing Requests (CSR) für VeriSign kann folgender Befehl verwendet werden:

openssl req -new -newkey rsa:4096 -nodes -keyout key.pem -out req.pem

Zum Testen eines neuen Zertifikats können openssl s_server und openssl s_client verwendet werden. Um ein Remote-Zertifikat abzurufen, kann folgender Befehl genutzt werden:

openssl s_client -connect host:port -showcerts

Informationen aus einem Zertifikat können mit folgendem Befehl extrahiert werden:

openssl x509 -in cert.pem -text -noout

Für den Im- und Export von PKCS#12-Zertifikaten kann openssl pkcs12 verwendet werden.

Zertifikatsverifikation

Ein Zertifikat kann mit folgendem Befehl verifiziert werden:

openssl verify cert.pem

OpenSSL erkennt standardmäßig eine Reihe von Zertifizierungsstellen. Deren Liste kann mit dem Befehl openssl list-standard-trusts (ab OpenSSL 3.0) eingesehen werden. Um OpenSSL dazu zu bringen, ein bestimmtes Zertifikat zu erkennen, kann der Pfad zum CA-Zertifikat mit der Option -CAfile angegeben werden.

Kommandozeilen-Clients und -Server

OpenSSL kann auch als Kommandozeilen-Client und -Server verwendet werden. Um eine Verbindung zu einem sicheren SMTP-Server herzustellen, kann folgender Befehl verwendet werden:

openssl s_client -connect smtp.example.com:465 -starttls smtp

Für Verbindungen zu Webservern mit SNI kann folgender Befehl genutzt werden:

openssl s_client -connect www.example.com:443 -servername www.example.com

Ein einfacher SSL-Server kann mit folgendem Befehl aufgesetzt werden:

openssl s_server -cert cert.pem -key key.pem

Digest-Erstellung und -Verifikation

Ein MD5- oder SHA1-Digest einer Datei kann mit folgenden Befehlen erstellt werden:

openssl dgst -md5 file.txt
openssl dgst -sha1 file.txt

Um einen Digest zu signieren, kann folgender Befehl verwendet werden:

openssl dgst -sha256 -sign private.key -out signature.bin file.txt

Die Verifikation eines signierten Digests erfolgt mit folgendem Befehl:

openssl dgst -sha256 -verify public.key -signature signature.bin file.txt

Für die Erstellung eines Apache Digest-Passworteintrags kann folgender Befehl genutzt werden:

openssl dgst -md5 -hex user:realm:password

Verschlüsselung und Entschlüsselung

Für die Base64-Kodierung kann folgender Befehl verwendet werden:

openssl base64 -in file.txt -out encoded.txt

Eine Datei kann einfach mit folgendem Befehl verschlüsselt werden:

openssl enc -aes-256-cbc -salt -in file.txt -out encrypted.txt -pass pass:"mysecretpassword"

Schlüsselverwaltung

Ein RSA-Schlüssel kann mit folgendem Befehl erzeugt werden:

openssl genrsa -out key.pem 4096

Ein öffentlicher RSA-Schlüssel kann mit folgendem Befehl erstellt werden:

openssl rsa -in key.pem -pubout -out pubkey.pem

Für DSA-Schlüssel kann folgender Befehl genutzt werden:

openssl dsaparam -out dsaparam.pem 2048

und anschließend:

openssl gendsa -out key.pem dsaparam.pem

Elliptische Kurvenschlüssel können mit folgendem Befehl erzeugt werden:

openssl ecparam -name secp384r1 -genkey -noout -out key.pem

Um ein Passwort von einem Schlüssel zu entfernen, kann folgender Befehl verwendet werden:

openssl rsa -in key.pem -out newkey.pem

Passwort-Hashes

Ein crypt-style Hash kann mit folgendem Befehl erzeugt werden:

openssl passwd -crypt password

Für einen shadow-style Hash kann folgender Befehl genutzt werden:

openssl passwd -1 password

Primzahlen

Um zu prüfen, ob eine Zahl eine Primzahl ist, kann folgender Befehl verwendet werden:

openssl prime 1299709

Eine Reihe von Primzahlen kann mit folgendem Befehl generiert werden:

openssl prime -generate -bits 2048 -safe

Zufallsdaten

Zufallsdaten können mit folgendem Befehl erzeugt werden, um starke kryptografische Schlüssel und Initialisierungsvektoren zu generieren:

openssl rand -base64 32

S/MIME

Die Verifikation einer signierten S/MIME-Nachricht erfolgt mit folgendem Befehl:

openssl smime -verify -in signed.msg -noverify -out content.txt

Eine S/MIME-Nachricht kann mit folgendem Befehl verschlüsselt werden:

openssl smime -encrypt -in message.txt -out encrypted.msg -from sender@example.com -to recipient@example.com -subject "Encrypted Message" cert.pem

Eine S/MIME-Nachricht kann mit folgendem Befehl signiert werden:

openssl smime -sign -in message.txt -out signed.msg -from sender@example.com -to recipient@example.com -subject "Signed Message" -signer cert.pem -inkey key.pem

Fazit

OpenSSL ist ein vielseitiges Werkzeug für eine breite Palette von kryptografischen Aufgaben. Es ermöglicht die sichere Kommunikation und den Schutz sensibler Daten. Die Verfügbarkeit für alle Betriebssysteme und die Möglichkeit, Dateien so zu verschlüsseln, dass sie nur von Personen mit dem passenden Schlüssel gelesen werden können, machen es zu einem wichtigen Werkzeug für Sicherheitsenthusiasten.

Siehe auch: OpenSSL Dokumentation