Ein RSA Schlüsselpaar mit OpenSSL erzeugen
August 15, 2017 | Kategorie: tutorials | Thema: sicherheit

Gesicherte Kommunikation kann oft essentiell sein. Mit OpenSSL lassen sich Schlüssel dazu erzeugen.

Einen privaten Schlüssel erstellt man mit

openssl genrsa 2048 > test.pri

Diesen privaten Schlüssel sollten Sie unter keinen Umständen verlieren oder weitergeben. Man kann den Schlüssel zur Sicherheit auch noch mit einem Passwort versehen.

openssl genrsa -aes128 -passout pass:foobar 2048 > test.pri

Mit Hilfe des privaten Schlüssel erstellt man den dazugehörenden öffentlichen Schlüssel.

openssl rsa -in test.pri -pubout > test.pub

Überprüfen kann man die beiden Schlüssel dann mit

openssl rsa -pubin -in test.pub -text -noout
openssl rsa -in test.pri -check -text -noout

Dateien ver- und entschlüsseln

Möchte A an B eine verschlüsselte Nachricht senden, nimmt A den öffentlichen Schlüssel von B und verschlüsselt die Nachricht damit. Entschlüsseln kann sie nur B mit seinem privaten Schlüssel.

openssl rsautl -in secret.txt -out secret.txt.enc -pubin -inkey test.pub -encrypt
openssl rsautl -in secret.txt.enc -out secret.txt -inkey test.pri -decrypt

ACHTUNG: Ist der zu verschlüsselnde Inhalt länger als der bei der Schlüsselerstellung verwendete Modulus funktioniert RSA nicht und man verwendet AES.

openssl aes-256-cbc -e -in file.zip -out file.zip.enc
openssl aes-256-cbc -d -in file.zip.enc -out file.zip

Dateien signieren

Die Signierung dient als Beweis das eine Datei tatsächlich von besagtem Absender stammt. Möchte A die Datei, die er an B schickt signieren, nimmt A seinen privaten Schlüssel und erstellt in Verbindung mit dem Inhalt eine Signatur. Diese wird mit dem Inhalt mitgeschickt.

openssl dgst -sha256 -sign test.pri -out file.txt.sig.tmp file.txt
openssl base64 -in file.txt.sig.tmp -out file.txt.sig

Signatur prüfen

B nimmt den öffentlichen Schlüssel von A und kann in Verbindung mit der Signatur feststellen, ob sie tatsächlich von A mit seinem privaten Schlüssel (den nur A hat) signiert wurde.

openssl base64 -d -in file.txt.sig -out file.txt.sig.tmp
openssl dgst -sha256 -verify test.pub -signature file.txt.sig.tmp file.txt
Beitrag auf Github bearbeiten
Suche
Weiterlesen