|
|
(28 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt) |
Zeile 1: |
Zeile 1: |
| {{DISPLAYTITLE:openssl}}
| |
| '''OpenSSL''' - [[Freie Software]] für [[Transport Layer Security]] | | '''OpenSSL''' - [[Freie Software]] für [[Transport Layer Security]] |
|
| |
|
| == Beschreibung == | | == Beschreibung == |
| * ursprünglich ''SSLeay''
| |
| * [[Transport Layer Security]], ursprünglich ''Secure Sockets Layer'' (SSL) | | * [[Transport Layer Security]], ursprünglich ''Secure Sockets Layer'' (SSL) |
|
| |
|
Zeile 9: |
Zeile 7: |
| * [[Implementierung]]en der [[Netzwerkprotokoll]]e und verschiedener [[Verschlüsselung]]en | | * [[Implementierung]]en der [[Netzwerkprotokoll]]e und verschiedener [[Verschlüsselung]]en |
| * Das Programm ''openssl'' für die Kommandozeile | | * Das Programm ''openssl'' für die Kommandozeile |
| * Beantragen, Erzeugen und Verwalten von [[Digitales Zertifikat|Zertifikaten]]. | | * Beantragen, Erzeugen und Verwalten von [[Digitales Zertifikat|Zertifikaten]] |
|
| |
|
| Die in [[C (Programmiersprache)|C]] geschriebene Basisbibliothek stellt allgemeine kryptographische Funktionen zum Ver- und Entschlüsseln sowie diverse weitere Werkzeuge bereit. | | Die in [[C (Programmiersprache)|C]] geschriebene Basisbibliothek stellt allgemeine kryptographische Funktionen zum Ver- und Entschlüsseln sowie diverse weitere Werkzeuge bereit. |
|
| |
|
| === Lizenz === | | === Lizenz === |
| OpenSSL steht unter der Lizenz von SSLeay und seiner eigenen Lizenz, die zusammengefasst gelten.<ref>{{cite web |url=https://www.gnu.org/licenses/license-list.html |title=Various Licenses and Comments about Them |publisher=Free Software Foundation |accessdate=2011-11-28}}</ref> Beide sind der ursprünglichen [[BSD-Lizenz]] ähnlich.<ref name="license" /> Die wesentliche Einschränkung ist demzufolge, dass Werbung für Fremdprodukte, die OpenSSL enthalten, OpenSSL und die beiden Urheber von SSLeay erwähnen muss. | | OpenSSL steht unter der Lizenz von SSLeay und seiner eigenen Lizenz, die zusammengefasst gelten |
| | * Beide sind der ursprünglichen [[BSD-Lizenz]] ähnlich |
| | * 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-Lizenz|Apache-2.0-Lizenz]], um die Verwendung in anderen Open-Source-Projekten zu vereinfachen.<ref>{{Internetquelle |autor=Tilman Wittenhorst |url=https://www.heise.de/newsticker/meldung/OpenSSL-wechselt-die-Lizenz-und-veraergert-Beteiligte-3664538.html |titel=OpenSSL wechselt die Lizenz und verärgert Beteiligte |werk=[[heise online]] |hrsg=[[Heise Medien]] |datum=2017-03-25 |abruf=2020-01-06}}</ref><ref>{{Internetquelle |url=https://www.coreinfrastructure.org/announcements/openssl-re-licensing-to-apache-license-v-2-0-to-encourage-broader-use-with-other-foss-projects-and-products/ |titel=OpenSSL Re-licensing to Apache License v. 2.0 To Encourage Broader Use with Other FOSS Projects and Products |werk=[[Core Infrastructure Initiative]] |hrsg=[[Linux Foundation]] |datum=2017-03-23 |abruf=2020-01-06 |sprache=en-US}}</ref><ref>{{Internetquelle |autor=Richard Levitte |url=https://github.com/openssl/openssl/commit/151333164ece49fdba3fe5c4bbdc3333cd9ae66d |titel=Change license to the Apache License v2.0 · openssl/openssl@1513331 |datum=2018-12-06 |abruf=2020-01-06 |sprache=en}}</ref> | | Ab Version 3.0.0 steht OpenSSL unter der [[Apache-Lizenz|Apache-2.0-Lizenz]], um die Verwendung in anderen Open-Source-Projekten zu vereinfachen |
|
| |
|
| == Installation ==
| | <noinclude> |
| == Anwendungen ==
| |
| === Zufallszahl erzeugen ===
| |
| * Schlüssel (keys) erstellen
| |
| $ '''openssl rand -base64 16'''
| |
| Zcc/wH0SQ7/WLvkuHq1Cjg==
| |
|
| |
|
| $ '''openssl rand -hex 16'''
| | == Anhang == |
| 1f8969db2bcbb7c794a97faccd29bf61
| | === Siehe auch === |
| | | {{Special:PrefixIndex/{{BASEPAGENAME}}}} |
| {| class="wikitable sortable options"
| | ---- |
| |-
| | {{Special:PrefixIndex/openssl}} |
| ! 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 <tt>-d</tt> 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 <tt>rsautl</tt>. | |
| | |
| Eine weitere sinnvolle Option ist z. B. noch <tt>-a</tt>, 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"
| |
| | |
| # openssl benutzt ab Version 1.1 (?) nicht mehr -md md5 als Default-Option, ohne diese Option kann eine mit
| |
| # Version 1.0 verschlüsselte Datei nicht entschlüsselt werden.
| |
| | |
| === SSL-Zertifkat selbst erstellen/erzeugen/signieren ===
| |
| ; Erstellung eines SSL-Zertifikats
| |
| # Erstellen einer Zertifikats-Anforderung (''certificate (signing) request'', ''csr'')
| |
| # Privaten Key erzeugen
| |
| # 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 <code>server.crt</code> noch <code>server.key</code> 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 ==== | | ==== Links ==== |
| # [http://www.openssl.org/docs/HOWTO/certificates.txt Anleitung bei OpenSSL zur Erzeugung von (selbst-signierten) Zertifikaten]
| | ===== Projekt ===== |
| | |
| == 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 [[Secure Shell|SSH]]-, [[OpenVPN]]-, [[Domain Name System Security Extensions|DNSSEC]]-Schlüssel, Schlüssel in [[X.509]]-Zertifikaten sowie Sitzungsschlüssel, die in SSL/TLS-Verbindungen ([[Hypertext Transfer Protocol Secure|HTTPS]]) genutzt werden. Schlüssel, die mit [[GNU Privacy Guard|GnuPG]] oder [[GnuTLS]] erzeugt wurden, seien nicht betroffen.<ref name="debian-081571">{{Internetquelle |autor= |url=https://www.debian.org/security/2008/dsa-1571 |titel=Debian-Sicherheitsankündigung: DSA-1571-1 openssl -- Voraussagbarer Zufallszahlengenerator |werk=debian.org |sprache=de |datum=2008-05-13 |abruf=2020-12-10}}</ref>
| |
| | |
| 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-Angriff]]e 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]],<ref name="fefe-697">{{Internetquelle |autor= |url=https://blog.fefe.de/?ts=b6c9ec7e |titel=Fefes Blog |werk=blog.fefe.de |datum=2008-05-23 |abruf=2020-12-10}}</ref> welcher unter anderem für die Bereitstellung der [[ELSTER]]-Software der deutschen Finanzämter sowie von Treiber-Updates von AMD<ref>Downloadlink auf http://game.amd.com/us-en/drivers_catalyst.aspx?p=xp64/theater550-xp64</ref> verantwortlich ist.
| |
| | |
| === Heartbleed-Bug ===
| |
| [[Heartbleed]]
| |
| Durch den Heartbleed-Bug können in betroffenen OpenSSL-Versionen über [[Transport Layer Security|TLS]]- und [[Datagram Transport Layer Security|DTLS]]-Verbindungen Teile des [[Arbeitsspeicher]]s der Gegenseite ausgelesen werden. Dadurch können Daten von betroffenen Systemen unberechtigt kopiert werden, wie etwa private Schlüssel von [[X.509]]-Zertifikaten, [[Benutzername]]n und [[Passwort|Passwörter]]. Betroffen ist die [[Heartbeat (Informatik)|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 ===
| |
| # https://www.openssl.org | | # https://www.openssl.org |
| | | ===== Weblinks ===== |
| === Weblinks === | |
| # [https://slproweb.com/products/Win32OpenSSL.html OpenSSL-Installer (Windows)] | | # [https://slproweb.com/products/Win32OpenSSL.html OpenSSL-Installer (Windows)] |
| # [http://www.polarhome.com/openssl/ OpenSSL für OpenVMS] auf [[IA-64]], [[Virtual Address eXtension|VAX]] und [[Alpha-Prozessor]] | | # [http://www.polarhome.com/openssl/ OpenSSL für OpenVMS] auf [[IA-64]], [[Virtual Address eXtension|VAX]] und [[Alpha-Prozessor]] |
| # [http://www.online-tutorials.net/security/openssl-tutorial/tutorials-t-69-207.html Ein Linux-OpenSSL-Tutorial] | | # [http://www.online-tutorials.net/security/openssl-tutorial/tutorials-t-69-207.html Ein Linux-OpenSSL-Tutorial] |
| # [https://www.guug.de/veranstaltungen/ffg2008/slides/opensslX509-folienFfg2008.pdf Anleitung zum Erstellen eigener X.509-Zertifikate mittels OpenSSL] | | # [https://www.guug.de/veranstaltungen/ffg2008/slides/opensslX509-folienFfg2008.pdf Anleitung zum Erstellen eigener X.509-Zertifikate mittels OpenSSL] |
|
| |
|
| |
|
| |
|
| |
|
| [[Kategorie:Linux/Befehl]] | | [[Kategorie:Linux/Befehl]] |
|
| |
| = TMP =
| |
| [[Kategorie:TLS]] | | [[Kategorie:TLS]] |
| [[Kategorie:Kryptografie/Anwendung]] | | [[Kategorie:Kryptografie/Anwendung]] |
| {{DEFAULTSORT:openssl}}
| | [[Kategorie:OpenSSL]] |
| | </noinclude> |