
Allzweck-Kryptographie-Bibliothek, die SSL/TLS-Protokolle, symmetrische/asymmetrische Chiffren, Nachrichtendigeste und X.509-Zertifikatsverwaltung für sichere Kommunikation 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 nutzbaren, voll funktionsfähigen und quelloffenen Werkzeugsatzes, der die Protokolle Secure Sockets Layer (SSL v2/v3) und Transport Layer Security (TLS v1) sowie eine leistungsstarke allgemeine Kryptografiebibliothek implementiert. Das Projekt wird von einer weltweiten Gemeinschaft von Freiwilligen verwaltet, die das Internet nutzen, um zu kommunizieren, zu planen und das OpenSSL-Werkzeugset und die dazugehörige Dokumentation zu entwickeln.
OpenSSL basiert auf der hervorragenden SSLeay-Bibliothek, die von Eric A. Young und Tim J. Hudson entwickelt wurde. Das OpenSSL-Werkzeugset ist unter einer Doppellizenz (der OpenSSL-Lizenz plus der SSLeay-Lizenz) lizenziert, was im Grunde bedeutet, dass Sie es frei nutzen und sowohl für kommerzielle als auch nicht-kommerzielle Zwecke verwenden können, solange Sie die Bedingungen beider Lizenzen erfüllen.
Das OpenSSL-Werkzeugset umfasst:
libssl.a: Implementierung von SSLv2, SSLv3, TLSv1 und dem erforderlichen Code zur Unterstützung von SSLv2, SSLv3 und TLSv1 in einem Server und Client.
libcrypto.a: Allgemeine Verschlüsselung und X.509 v1/v3 Sachen, die von SSL/TLS benötigt werden, aber logisch nicht dazu gehören. Es enthält Routinen für Folgendes:
Ciphers
libdes - EAYs libdes DES-Verschlüsselungspaket, das einige Jahre im Internet kursierte und dann von ihm als Teil von SSLeay neu lizenziert wurde. Es umfasst 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, einen schnellen crypt(3) und 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 auf Smartcards verbreitet ist.
Public Key
RSA-Verschlüsselung/-Entschlüsselung/-Erzeugung.
Es gibt keine Beschränkung der Bitanzahl.
DSA-Verschlüsselung/-Entschlüsselung/-Erzeugung.
Es gibt keine Beschränkung der Bitanzahl.
Diffie-Hellman-Schlüsselaustausch/-Schlüsselerzeugung.
Es gibt keine Beschränkung der Bitanzahl.
X.509v3-Zertifikate
X509-Kodierung/-Dekodierung in/aus binärem ASN1 und einer PEM-basierten ASCII-Binärkodierung, die Verschlüsselung mit einem privaten Schlüssel unterstützt. Programm zur Erstellung von RSA- und DSA-Zertifikatsanfragen und zur Erstellung von RSA- und DSA-Zertifikaten.
Systeme
Die normalen Digital-Envelope-Routinen und Base64-Kodierung. Höherer Zugriff auf Verschlüsselungen und Digests per Name. Neue Verschlüsselungen können zur Laufzeit geladen werden. Das BIO-IO-System, eine einfache nicht-blockierende IO-Abstraktion. Derzeit unterstützte Methoden sind Dateideskriptoren, Sockets, Socket-Accept, Socket-Connect, Speicherpuffer, Pufferung, SSL-Client/Server, Dateizeiger, Verschlüsselung, Digest, nicht-blockierende Tests und Null.
Datenstrukturen
Ein dynamisch wachsendes Hashing-System
Ein einfacher Stack.
Ein Konfigurationslader, der ein ähnliches Format wie MS .ini-Dateien verwendet.
openssl: Ein Befehlszeilenwerkzeug, das verwendet werden kann für: Erstellung von RSA-, DH- und DSA-Schlüsselparametern Erstellung von X.509-Zertifikaten, CSRs und CRLs Berechnung von Message Digests Verschlüsselung und Entschlüsselung mit Ciphern SSL/TLS-Client- und Server-Tests Verarbeitung von S/MIME-signierten oder -verschlüsselten E-Mails
Verschiedene Unternehmen halten verschiedene Patente für verschiedene Algorithmen an verschiedenen Orten weltweit. SIE sind dafür verantwortlich, sicherzustellen, dass Ihre Nutzung von Algorithmen legal ist, indem Sie prüfen, ob es Patente in Ihrem Land gibt. Die Datei enthält einige der Patente, von denen wir wissen oder von denen gemunkelt wird, dass sie existieren. Dies ist keine vollständige Liste.
RSA Security hält Softwarepatente auf den RC5-Algorithmus. Wenn Sie diese Verschlüsselung 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. Sie sollten kontaktiert werden, wenn dieser Algorithmus verwendet werden soll; ihre Webseite ist http://www.ascom.ch/.
NTT und Mitsubishi haben Patente und anhängige Patente auf den Camellia-Algorithmus, erlauben jedoch die kostenlose Nutzung ohne explizite Lizenzvereinbarung: http://info.isl.ntt.co.jp/crypt/eng/info/chiteki.html
Um dieses Paket unter einem Unix-Derivat zu installieren, lesen Sie die INSTALL-Datei. Für eine Win32-Plattform lesen Sie die INSTALL.W32-Datei. Für OpenVMS-Systeme lesen Sie INSTALL.VMS.
Lesen Sie die Dokumentation im doc/-Verzeichnis. Sie ist recht grob, listet aber die Funktionen auf; Sie werden wahrscheinlich in den Code schauen müssen, um herauszufinden, wie man sie verwendet. Schauen Sie sich die Beispielprogramme an.
Für einige Plattformen gibt es bekannte Probleme, die den Benutzer oder Anwendungsentwickler betreffen können. Wir versuchen, diese in doc/PROBLEMS zu sammeln, mit aktuellen Gedanken, wie sie in einer zukünftigen Version von OpenSSL gelöst werden sollten.
Siehe die OpenSSL-Website www.openssl.org für Details zur Erlangung kommerziellen technischen Supports.
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, fügen Sie bitte die folgenden Informationen in den Fehlerbericht ein:
- Auf Unix-Systemen:
Selbsttestbericht, generiert 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 dem OpenSSL-Projekt über den Request Tracker (http://www.openssl.org/support/rt.html) per E-Mail an:
Beachten Sie, dass der Request Tracker NICHT für allgemeine Hilfe oder Supportanfragen verwendet werden sollte. Nur weil etwas nicht so funktioniert, wie Sie es erwarten, bedeutet das nicht unbedingt, dass es ein Fehler in OpenSSL ist.
Beachten Sie, dass E-Mails an [email protected] in der öffentlich lesbaren Request-Tracker-Datenbank aufgezeichnet und an eine öffentliche Mailingliste weitergeleitet werden. Vertrauliche E-Mails können an [email protected] gesendet werden (PGP-Schlüssel von den Schlüsselservern 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 Zeichenfolge "[PATCH]" im Betreff. Bitte fügen Sie eine textliche Erklärung bei, was Ihr Patch bewirkt.
Wenn Sie unsicher sind, ob eine Funktion für die allgemeine OpenSSL-Community nützlich sein wird, besprechen Sie dies 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 bezogen auf das aktuelle Git oder den letzten Snapshot. Sie sollten dem Codierungsstil von OpenSSL folgen und ohne Warnungen kompilieren. Einige der Core-Team-Entwicklerziele können zu Testzwecken 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 akzeptiert werden, wenn eine TSU-Meldung und eine Kopie des Patches an [email protected] (früher BXA) gesendet werden, mit einer Kopie an den ENC Encryption Request Coordinator; nehmen Sie sich bitte etwas Zeit, um http://www.bis.doc.gov/Encryption/PubAvailEncSourceCodeNofify.html [sic] und http://w3.access.gpo.gov/bis/ear/pdf/740.pdf (EAR Section 740.13(e)) zu lesen. Wenn "Ihr Verschlüsselungsquellcode zu groß ist, um als E-Mail-Anhang zu dienen", nehmen sie ihn gerne per Fax entgegen; hoffen Sie, dass Sie einen günstigen Ferntarif haben.
Unser bevorzugtes Format für Änderungen ist die "diff -u"-Ausgabe. Sie könnten sie wie folgt generieren: