Openssl/Befehl

Aus Foxwiki

openssl - Kurzbeschreibung

Zufallszahl erzeugen

  • Schlüssel (keys) erstellen
$ openssl rand -base64 16
Zcc/wH0SQ7/WLvkuHq1Cjg==
$ openssl rand -hex 16
1f8969db2bcbb7c794a97faccd29bf61
Option Aufgabe
rand Pseudozufallszeichenketten einer bestimmten Kodierung und der angegebenen Länge erzeugt werden
-base64 Zeichenkette aus Zahlen, Groß- & Kleinbuchstaben, sowie den Zeichen '+' und '/' generiert
-hex Zeichenkette aus Hexadezimalzahlen

Verfügbare Algorithmen

$ openssl ciphers
ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384:DHE-RSA-AES256-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES256-SHA:ECDHE-RSA-AES256-SHA:DHE-RSA-AES256-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES128-SHA:DHE-RSA-AES128-SHA:RSA-PSK-AES256-GCM-SHA384:DHE-PSK-AES256-GCM-SHA384:RSA-PSK-CHACHA20-POLY1305:DHE-PSK-CHACHA20-POLY1305:ECDHE-PSK-CHACHA20-POLY1305:AES256-GCM-SHA384:PSK-AES256-GCM-SHA384:PSK-CHACHA20-POLY1305:RSA-PSK-AES128-GCM-SHA256:DHE-PSK-AES128-GCM-SHA256:AES128-GCM-SHA256:PSK-AES128-GCM-SHA256:AES256-SHA256:AES128-SHA256:ECDHE-PSK-AES256-CBC-SHA384:ECDHE-PSK-AES256-CBC-SHA:SRP-RSA-AES-256-CBC-SHA:SRP-AES-256-CBC-SHA:RSA-PSK-AES256-CBC-SHA384:DHE-PSK-AES256-CBC-SHA384:RSA-PSK-AES256-CBC-SHA:DHE-PSK-AES256-CBC-SHA:AES256-SHA:PSK-AES256-CBC-SHA384:PSK-AES256-CBC-SHA:ECDHE-PSK-AES128-CBC-SHA256:ECDHE-PSK-AES128-CBC-SHA:SRP-RSA-AES-128-CBC-SHA:SRP-AES-128-CBC-SHA:RSA-PSK-AES128-CBC-SHA256:DHE-PSK-AES128-CBC-SHA256:RSA-PSK-AES128-CBC-SHA:DHE-PSK-AES128-CBC-SHA:AES128-SHA:PSK-AES128-CBC-SHA256:PSK-AES128-CBC-SHA

Dateien verschlüsseln

Syntax
openssl enc <Algorithmus> -in <zu verschlüsselnde Datei> -out <Dateiname für verschlüsselte Datei>
Beispiel
openssl enc -aes-256-cbc -in secret.txt -out secret.txt.enc

Dateien entschlüsseln

Syntax
openssl enc <Algorithmus> -d -in <zu entschlüsselnde Datei> -out <Dateiname für entschlüsselte Datei>

Im Grunde handelt es sich um den gleichen Befehl wie bei der Verschlüsselung, nur dass hierbei noch die Option -d für decryption hinzugefügt wird.

Hinweis
  • Hierbei ist es auch möglich, für die Kryptografie eigene Keys zu verwenden.
  • Das entsprechende Schlüsselwort lautet hierbei rsautl.

Eine weitere sinnvolle Option ist z. B. noch -a, welche die verschlüsselten Daten in der Datei noch base64 kodiert.

$ cat secret.txt.enc
U2FsdGVkX18vM/gClOw34NJQday0+By5Ztpd2HKvbVK3D4ccDk3qrbaGZo065h7b

Hier helfen zwei kleine Skripte. Diese können z. B. als ssl-encode.sh und ssl-decode.sh gespeichert werden. Dazu bieten sich die Ordner ~/bin (für einen einzelnen Benutzer) oder /usr/local/bin (bei systemweiter Nutzung) an.

Verschlüsseln
#!/bin/bash
# make sure we get a file name
if [ $# -lt 1 ]; then
  echo "Usage: $0 filename"
  exit 1
fi
openssl enc -e -aes256 -in "$1" -out "$1".enc
Entschlüsseln
#!/bin/bash
# make sure we get 2 files
if [ $# -lt 2 ]; then
  echo "Usage: $0 encrypted_file decrypted_file"
  exit 1
fi
openssl enc -d -aes256 -in "$1" -out "$2"
  1. openssl benutzt ab Version 1.1 (?) nicht mehr -md md5 als Default-Option, ohne diese Option kann eine mit
  2. Version 1.0 verschlüsselte Datei nicht entschlüsselt werden.

Selbst signierte Zertifikate

SSL-Zertifkat selbst erstellen/erzeugen/signieren

Erstellung eines SSL-Zertifikats
  1. Erstellen einer Zertifikats-Anforderung (certificate (signing) request, csr)
  2. Privaten Key erzeugen
  3. Signieren des Keys mit der Zertifikats-Anforderung
Alle Schritte in einem Befehl
openssl req -new -days 999 -newkey rsa:4096bits -sha512 -x509 -nodes -out server.crt -keyout server.key
Hinweise
  • die Gültigkeitsdauer sollte ggf. von 999 Tagen auf einen anderen Wert geändert werden
  • achten Sie darauf, dass weder server.crt noch server.key im aktuellen Verzeichnis existieren, oder diese werden überschrieben!

Details

Privaten Key und CSR erzeugen
$ openssl req -new -keyout server.pem > server.csr
Privaten Key in passendes Format umwandeln
$ openssl rsa -in server.pem -out server.key
Selbst-signiertes Zertifikat erzeugen
$ openssl x509 -in server.csr -out server.crt -req -signkey server.key -days 999

Fehlerbehebung

Konfiguration

Dateien

Anhang

Siehe auch

Sicherheit

Dokumentation

RFC
RFC Titel
0000
Man-Pages
Info-Pages

Links

Projekt
Weblinks