
Allgemeine Kryptographie-Bibliothek und SSL/TLS-Toolkit, das Chiffren, Digests, Public-Key-Algorithmen, X.509-Zertifikate und ein Befehlszeilen-Tool für Verschlüsselung, Entschlüsselung und Zertifikatsverwaltung implementiert.
OpenSSL 1.0.1g 7. April 2014
Copyright (c) 1998-2011 The OpenSSL Project Copyright (c) 1995-1998 Eric A. Young, Tim J. Hudson Alle Rechte vorbehalten.
Das OpenSSL-Projekt ist eine gemeinschaftliche Initiative zur Entwicklung eines robusten, kommerziell einsetzbaren, voll ausgestatteten Open-Source-Toolkits, das die Protokolle Secure Sockets Layer (SSL v2/v3) und Transport Layer Security (TLS v1) sowie eine leistungsfähige allgemeine Kryptographie-Bibliothek implementiert. Das Projekt wird von einer weltweiten Gemeinschaft von Freiwilligen verwaltet, die das Internet zur Kommunikation, Planung und Entwicklung des OpenSSL-Toolkits und der zugehörigen Dokumentation nutzen.
OpenSSL basiert auf der hervorragenden SSLeay-Bibliothek, die von Eric A. Young und Tim J. Hudson entwickelt wurde. Das OpenSSL-Toolkit ist unter einer Doppellizenz (OpenSSL-Lizenz plus SSLeay-Lizenz) lizenziert, was im Wesentlichen bedeutet, dass Sie es frei erhalten und für kommerzielle und nicht-kommerzielle Zwecke nutzen dürfen, sofern Sie die Bedingungen beider Lizenzen erfüllen.
Das OpenSSL-Toolkit enthält:
libssl.a: Implementierung von SSLv2, SSLv3, TLSv1 und des erforderlichen Codes zur Unterstützung von SSLv2, SSLv3 und TLSv1 in einem einzigen Server und Client.
libcrypto.a: Allgemeine Verschlüsselungs- und X.509-v1/v3-Komponenten, die von SSL/TLS benötigt werden, aber nicht logisch dazu gehören. Es enthält Routinen für Folgendes:
Chiffren
libdes - EAYs libdes-DES-Verschlüsselungspaket, das einige Jahre im Netz
kursierte und von ihm dann als Teil von SSLeay neu lizenziert wurde.
Es enthält 15 'Modi/Variationen' von DES (1-, 2- und 3-Schlüssel-
Versionen von ecb, cbc, cfb und ofb; pcbc und eine allgemeinere Form
von cfb und ofb) einschließlich desx im cbc-Modus, ein schnelles
crypt(3) sowie Routinen zum Lesen von Passwörtern von der Tastatur.
RC4-Verschlüsselung,
RC2-Verschlüsselung - 4 verschiedene Modi: ecb, cbc, cfb und ofb.
Blowfish-Verschlüsselung - 4 verschiedene Modi: ecb, cbc, cfb und ofb.
IDEA-Verschlüsselung - 4 verschiedene Modi: ecb, cbc, cfb und ofb.
Digests
MD5- und MD2-Message-Digest-Algorithmen, schnelle Implementierungen,
SHA- (SHA-0) und SHA-1-Message-Digest-Algorithmen,
MDC2-Message-Digest. Ein auf DES basierender Hash, der bei Smartcards beliebt ist.
Public Key
RSA-Verschlüsselung/-Entschlüsselung/-Erzeugung.
Es gibt keine Begrenzung der Bitanzahl.
DSA-Verschlüsselung/-Entschlüsselung/-Erzeugung.
Es gibt keine Begrenzung der Bitanzahl.
Diffie-Hellman-Schlüsselaustausch/Schlüsselerzeugung.
Es gibt keine Begrenzung der Bitanzahl.
X.509v3-Zertifikate
X509-Kodierung/Dekodierung in/aus binärem ASN1 und eine PEM-basierte
ASCII-Binärkodierung, die Verschlüsselung mit einem privaten Schlüssel
unterstützt. Programm zur Erzeugung von RSA- und DSA-Zertifikatsanfragen
sowie zur Erzeugung von RSA- und DSA-Zertifikaten.
Systeme
Die üblichen Digital-Envelope-Routinen und Base64-Kodierung. Höherer
Zugriff auf Chiffren und Digests per Name. Neue Chiffren können zur Laufzeit
geladen werden. Das BIO-IO-System, eine einfache nicht-blockierende
IO-Abstraktion. Unterstützte Methoden sind derzeit Dateideskriptoren,
Sockets, Socket-Accept, Socket-Connect, Speicherpuffer, Pufferung, SSL-
Client/Server, Dateizeiger, Verschlüsselung, Digest, Nicht-blockierende
Tests und Null.
Datenstrukturen
Ein dynamisch wachsendes Hash-System
Ein einfacher Stack.
Ein Konfigurationslader, der ein Format ähnlich MS-.ini-Dateien verwendet.
openssl: Ein Kommandozeilenwerkzeug, das verwendet werden kann für: Erzeugung von RSA-, DH- und DSA-Schlüsselparametern Erzeugung von X.509-Zertifikaten, CSRs und CRLs Berechnung von Message Digests Ver- und Entschlüsselung mit Chiffren SSL/TLS-Client- und Server-Tests Verarbeitung von S/MIME-signierter oder -verschlüsselter E-Mail
Verschiedene Unternehmen halten in verschiedenen Ländern Patente auf verschiedene Algorithmen. SIE sind dafür verantwortlich, sicherzustellen, dass Ihre Nutzung von Algorithmen legal ist, indem Sie prüfen, ob es in Ihrem Land Patente gibt. Die Datei enthält einige der Patente, von denen wir wissen oder von denen vermutet wird, dass sie existieren. Dies ist keine vollständige Liste.
RSA Security besitzt Softwarepatente auf den RC5-Algorithmus. Wenn Sie diese Chiffre verwenden möchten, müssen Sie sich für Lizenzbedingungen an RSA Security wenden. Deren Webseite ist http://www.rsasecurity.com/.
RC4 ist ein Warenzeichen von RSA Security, daher sollte diese Bezeichnung möglicherweise nur mit Genehmigung von RSA Security verwendet werden.
Der IDEA-Algorithmus ist von Ascom in Österreich, Frankreich, Deutschland, Italien, Japan, den Niederlanden, Spanien, Schweden, der Schweiz, Großbritannien und den USA patentiert. Ascom sollte kontaktiert werden, wenn dieser Algorithmus verwendet werden soll; deren Webseite ist http://www.ascom.ch/.
NTT und Mitsubishi besitzen Patente und anhängige Patentanmeldungen auf den Camellia-Algorithmus, erlauben jedoch die kostenlose Nutzung ohne ausdrückliche Lizenzvereinbarung: http://info.isl.ntt.co.jp/crypt/eng/info/chiteki.html
Um dieses Paket unter einem Unix-Derivat zu installieren, lesen Sie die Datei INSTALL. Für eine Win32-Plattform lesen Sie die Datei INSTALL.W32. Für OpenVMS-Systeme lesen Sie INSTALL.VMS.
Lesen Sie die Dokumentation im Verzeichnis doc/. Sie ist recht grob, listet aber die Funktionen auf; Sie werden wahrscheinlich in den Code schauen müssen, um herauszufinden, wie Sie sie verwenden. Schauen Sie sich die Beispielprogramme an.
Für einige Plattformen gibt es bekannte Probleme, die Benutzer oder Anwendungsentwickler betreffen können. Wir versuchen, diese in doc/PROBLEMS zu sammeln, zusammen mit aktuellen Überlegungen, wie sie in einer zukünftigen Version von OpenSSL gelöst werden sollten.
Einzelheiten zum Erhalt kommerzieller technischer Unterstützung finden Sie auf der OpenSSL-Website www.openssl.org.
Wenn Sie Probleme mit OpenSSL haben, führen Sie bitte zunächst die folgenden Schritte aus:
- Laden Sie den aktuellen Snapshot von ftp://ftp.openssl.org/snapshot/
herunter, um zu sehen, ob das Problem bereits behoben wurde
- Entfernen Sie ASM-Versionen der Bibliotheken
- Entfernen Sie Compiler-Optimierungsflags
Wenn Sie einen Fehler melden möchten, nehmen Sie bitte die folgenden Informationen in den Fehlerbericht auf:
- Auf Unix-Systemen:
Selbsttestbericht, erzeugt mit 'make report'
- Auf anderen Systemen:
OpenSSL-Version: Ausgabe von 'openssl version -a'
Betriebssystemname, -version, Hardwareplattform
Compiler-Details (Name, Version)
- Anwendungsdetails (Name, Version)
- Problembeschreibung (Schritte, die das Problem reproduzieren, falls bekannt)
- Stack-Traceback (falls die Anwendung einen Core-Dump erzeugt)
Melden Sie den Fehler über den Request Tracker (http://www.openssl.org/support/rt.html) per E-Mail an das OpenSSL-Projekt:
Beachten Sie, dass der Request Tracker NICHT für allgemeine Hilfe- oder Supportanfragen verwendet werden sollte. Nur weil etwas nicht wie erwartet funktioniert, bedeutet das nicht unbedingt, dass es sich um einen Fehler in OpenSSL handelt.
Beachten Sie, dass E-Mails an [email protected] in der öffentlich einsehbaren Request-Tracker-Datenbank aufgezeichnet und an eine öffentliche Mailingliste weitergeleitet werden. Vertrauliche E-Mail kann an [email protected] gesendet werden (PGP-Schlüssel ist auf den Keyservern erhältlich).
Die Entwicklung wird auf der Mailingliste openssl-dev koordiniert (siehe http://www.openssl.org für Informationen zum Abonnieren). Wenn Sie einen Patch einreichen möchten, senden Sie ihn an [email protected] mit der Zeichenkette "[PATCH]" im Betreff. Bitte geben Sie unbedingt eine textliche Erklärung dessen ab, was Ihr Patch tut.
Wenn Sie sich nicht sicher sind, ob eine Funktion für die allgemeine OpenSSL-Gemeinschaft nützlich sein wird, besprechen Sie sie bitte zuerst auf der Mailingliste openssl-dev. Möglicherweise arbeitet bereits jemand an derselben Sache, oder es gibt einen guten Grund, warum diese Funktion nicht implementiert ist.
Patches sollten so aktuell wie möglich sein, vorzugsweise relativ zum aktuellen Git oder zum letzten Snapshot. Sie sollten den Codestil von OpenSSL befolgen und ohne Warnungen kompilieren. Einige der Entwicklungsziele des Kernteams können für Testzwecke verwendet werden (debug-steve64, debug-geoff usw.). OpenSSL kompiliert auf vielen verschiedenen Plattformen: Versuchen Sie sicherzustellen, dass Sie nur portable Funktionen verwenden.
Hinweis: Aus rechtlichen Gründen können Beiträge aus den USA nur angenommen werden, wenn eine TSU-Meldung und eine Kopie des Patches an [email protected] (ehemals BXA) gesendet werden, mit einer Kopie an den ENC Encryption Request Coordinator; bitte nehmen Sie sich etwas Zeit, um http://www.bis.doc.gov/Encryption/PubAvailEncSourceCodeNofify.html [sic] und http://w3.access.gpo.gov/bis/ear/pdf/740.pdf (EAR Abschnitt 740.13(e)) für die Einzelheiten anzusehen. Wenn "Ihr Verschlüsselungsquellcode zu groß ist, um als E-Mail-Anhang zu dienen", empfangen sie ihn auch gerne per Fax; hoffentlich haben Sie einen günstigen Ferntarif.
Unser bevorzugtes Format für Änderungen ist "diff -u"-Ausgabe. Sie können sie wie folgt erzeugen: