OpenSSL

Aus Foxwiki

OpenSSL - Freie Software für Transport Layer Security

Beschreibung

OpenSSL umfasst

Die in C geschriebene Basisbibliothek stellt allgemeine kryptographische Funktionen zum Ver- und Entschlüsseln sowie diverse weitere Werkzeuge bereit.

Lizenz

OpenSSL steht unter der Lizenz von SSLeay und seiner eigenen Lizenz, die zusammengefasst gelten.[1] Beide sind der ursprünglichen BSD-Lizenz ähnlich.[2] Die wesentliche Einschränkung ist demzufolge, dass Werbung für Fremdprodukte, die OpenSSL enthalten, OpenSSL und die beiden Urheber von SSLeay erwähnen muss.

Ab Version 3.0.0 steht OpenSSL unter der Apache-2.0-Lizenz, um die Verwendung in anderen Open-Source-Projekten zu vereinfachen.[3][4][5]

Installation

Anwendungen

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.

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

Links

  1. Anleitung bei OpenSSL zur Erzeugung von (selbst-signierten) Zertifikaten

Syntax

Optionen

Parameter

Umgebungsvariablen

Exit-Status

Konfiguration

Dateien

Sicherheit

Bemerkenswerte Sicherheitslücken

Schwache Schlüssel unter Debian

Am 13. Mai 2008 gab das Debian-Projekt bekannt, dass das OpenSSL-Paket der Distributionen seit 17. September 2006 (Version 0.9.8c-1 bis 0.9.8g-9) eine Sicherheitslücke enthielt. Durch einen Fehler in einem Debian-spezifischen Patch sind die mit dem in diesen Paketen enthaltenen Zufallszahlengenerator erzeugten Schlüssel vorhersagbar. Davon betroffen seien SSH-, OpenVPN-, DNSSEC-Schlüssel, Schlüssel in X.509-Zertifikaten sowie Sitzungsschlüssel, die in SSL/TLS-Verbindungen (HTTPS) genutzt werden. Schlüssel, die mit GnuPG oder GnuTLS erzeugt wurden, seien nicht betroffen.[6]

Die Sicherheitslücke entstand beim Versuch, eine Warnmeldung des Codeanalysewerkzeugs Valgrind zu beseitigen. Dabei sollte eine wenig relevante Codezeile, welche die Warnung verursachte, entfernt werden, allerdings wurde auch ein zweites Vorkommen dieser Zeile entfernt, welches in einem anderen Kontext stand und eine völlig andere Bedeutung hatte.

Die entsprechenden Schlüsselpaare sind leicht angreifbar, da es möglich ist, sämtliche in Frage kommenden privaten Schlüssel innerhalb weniger Tage zu berechnen. Für die betroffenen SSH-Schlüssel existiert ein frei herunterladbares Paket im Internet. Durch diesen Fehler waren und sind SSL-Verbindungen zu vielen Servern durch Man-in-the-Middle-Angriffe verwundbar. Verbindungen zu Servern, die jemals ein Zertifikat mit einem schwachen Schlüssel aufwiesen, sind so lange angreifbar, bis die Zertifikate ablaufen oder wirksam widerrufen werden. Dabei ist zu beachten, dass viele Browser nicht auf widerrufene Zertifikate prüfen. Besonders prominent in diesem Zusammenhang war ein verwundbarer Server des Dienstleisters Akamai,[7] welcher unter anderem für die Bereitstellung der ELSTER-Software der deutschen Finanzämter sowie von Treiber-Updates von AMD[8] verantwortlich ist.

Heartbleed-Bug

Heartbleed Durch den Heartbleed-Bug können in betroffenen OpenSSL-Versionen über TLS- und DTLS-Verbindungen Teile des Arbeitsspeichers der Gegenseite ausgelesen werden. Dadurch können Daten von betroffenen Systemen unberechtigt kopiert werden, wie etwa private Schlüssel von X.509-Zertifikaten, Benutzernamen und Passwörter. Betroffen ist die Heartbeat-Implementierung in den OpenSSL-Versionen 1.0.1 vom 14. März 2012 bis einschließlich 1.0.1f, sowie mehrere Beta-Versionen von 1.0.1 und 1.0.2. Die Sicherheitslücke wurde mit Version 1.0.1g am 7. April 2014 behoben.

Dokumentation

RFC

Man-Pages

Info-Pages

Siehe auch

Links

Projekt

  1. https://www.openssl.org

Weblinks

  1. OpenSSL-Installer (Windows)
  2. OpenSSL für OpenVMS auf IA-64, VAX und Alpha-Prozessor
  3. Ein Linux-OpenSSL-Tutorial
  4. Anleitung zum Erstellen eigener X.509-Zertifikate mittels OpenSSL

TMP

  1. Vorlage:Cite web
  2. Referenzfehler: Es ist ein ungültiger <ref>-Tag vorhanden: Für die Referenz namens license wurde kein Text angegeben.
  3. Downloadlink auf http://game.amd.com/us-en/drivers_catalyst.aspx?p=xp64/theater550-xp64