
OpenSSL 1.0.1g-Quellcode-Schnappschuss, der eine SSL/TLS- und Allzweck-Kryptographie-Bibliothek mit Chiffren, Digests und X.509-Zertifikatsverarbeitung bereitstellt.
OpenSSL 1.0.1g 7 Apr 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 ausgestatteten und quelloffenen Toolkit-Implementierungen der Secure Sockets Layer (SSL v2/v3)- und Transport Layer Security (TLS v1)-Protokolle sowie einer leistungsstarken Kryptographie-Bibliothek für allgemeine Zwecke. Das Projekt wird von einer weltweiten Gemeinschaft Freiwilliger verwaltet, die das Internet nutzen, um zu kommunizieren, zu planen und das OpenSSL-Toolkit sowie 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-Toolkit ist unter einer Dual-Lizenz (der OpenSSL-Lizenz plus der SSLeay-Lizenz) lizenziert, was im Wesentlichen bedeutet, dass Sie es für kommerzielle und nicht-kommerzielle Zwecke frei nutzen und verwenden können, solange Sie die Bedingungen beider Lizenzen erfüllen.
Das OpenSSL-Toolkit umfasst:
libssl.a: Implementierung von SSLv2, SSLv3, TLSv1 und des erforderlichen Codes, um sowohl SSLv2, SSLv3 als auch TLSv1 in einem Server und Client zu unterstützen.
libcrypto.a: Allgemeine Verschlüsselungs- und X.509 v1/v3-Funktionen, die von SSL/TLS benötigt werden, aber nicht wirklich logischer Teil davon sind. Es enthält Routinen für Folgendes:
Chiffren
libdes - EAY's libdes DES-Verschlüsselungspaket, das einige Jahre im
Netz kursierte und dann von ihm als Teil von SSLeay neu
lizenziert wurde. Es umfasst 15 'Modi/Varianten' von DES
(1, 2 und 3-Schlüssel-Versionen von ecb, cbc, cfb und ofb;
pcbc sowie 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 auf
Smartcards beliebt ist.
Öffentlicher Schlüssel
RSA-Verschlüsselung/Entschlüsselung/Generierung.
Es gibt keine Beschränkung der Bitanzahl.
DSA-Verschlüsselung/Entschlüsselung/Generierung.
Es gibt keine Beschränkung der Bitanzahl.
Diffie-Hellman-Schlüsselaustausch/Schlüsselgenerierung.
Es gibt keine Beschränkung der Bitanzahl.
X.509v3-Zertifikate
X509-Kodierung/Dekodierung in/aus binärem ASN1 und einer auf PEM
basierenden ASCII-Binärkodierung, die Verschlüsselung mit einem
privaten Schlüssel unterstützt. Programm zur Erstellung von RSA-
und DSA-Zertifikatsanforderungen und zur Generierung von RSA- und
DSA-Zertifikaten.
Systeme
Die üblichen digitalen Umschlagroutinen und Base64-Kodierung.
Höherstufiger Zugriff auf Chiffren und Digests nach Name. Neue
Chiffren können zur Laufzeit geladen werden. Das BIO-IO-System, eine
einfache nicht-blockierende IO-Abstraktion. Unterstützte Methoden 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 Stapel.
Ein Konfigurationslader, der ein Format ähnlich MS .ini-Dateien
verwendet.
openssl: Ein Kommandozeilenwerkzeug, 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 Chiffren 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 in Ihrem Land Patente existieren. Die Datei enthält einige der Patente, von denen wir wissen oder die vermutet werden. Dies ist keine endgültige Liste.
RSA Security hält Softwarepatente auf den RC5-Algorithmus. Wenn Sie diese Chiffre verwenden möchten, müssen Sie RSA Security für Lizenzbedingungen kontaktieren. Deren Webseite ist http://www.rsasecurity.com/.
RC4 ist ein Warenzeichen von RSA Security, daher sollte die Verwendung dieses Labels möglicherweise nur mit Genehmigung von RSA Security erfolgen.
Der IDEA-Algorithmus ist von Ascom in Österreich, Frankreich, Deutschland, Italien, Japan, den Niederlanden, Spanien, Schweden, der Schweiz, dem Vereinigten Königreich und den USA patentiert. Sie sollten kontaktiert werden, wenn dieser Algorithmus verwendet werden soll; deren Webseite ist http://www.ascom.ch/.
NTT und Mitsubishi haben Patente und anhängige Patente auf den Camellia- Algorithmus, erlauben jedoch die Nutzung kostenlos 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 zu verwenden sind. 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, zusammen mit aktuellen Gedanken, wie sie in einer zukünftigen Version von OpenSSL gelöst werden sollten.
Details 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 durch:
- 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, erstellt 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 Unterstützungs- oder Hilfeanfragen 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 einsehbaren Request-Tracker-Datenbank aufgezeichnet und an eine öffentliche Mailingliste weitergeleitet werden. Vertrauliche E-Mails können an [email protected] gesendet werden (PGP-Schlüssel auf den Schlüsselservern verfügbar).
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 dem Betreff "[PATCH]". Bitte fügen Sie eine textuelle Erklärung hinzu, was Ihr Patch bewirkt.
Wenn Sie sich nicht sicher sind, ob eine Funktion für die allgemeine OpenSSL-Community nützlich ist, besprechen Sie dies bitte zuerst auf der Mailingliste openssl-dev. Möglicherweise arbeitet bereits jemand an demselben Thema, 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 Codierungsstil von OpenSSL befolgen und ohne Warnungen kompilieren. Einige der Kernentwickler- Ziele können zu Testzwecken verwendet werden (debug-steve64, debug-geoff etc.). OpenSSL wird auf vielen verschiedenen Plattformen kompiliert: 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-Benachrichtigung und eine Kopie des Patches an [email protected] (früher BXA) mit einer Kopie an den ENC Encryption Request Coordinator gesendet werden; 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 Section 740.13(e)) für die Details anzusehen. Falls "Ihr Verschlüsselungs-Quellcode zu groß ist, um als E-Mail-Anhang zu dienen", nehmen sie ihn auch gerne per Fax entgegen; hoffentlich haben Sie einen günstigen Ferngesprächs-Tarif.
Unser bevorzugtes Format für Änderungen ist die Ausgabe von "diff -u". Sie könnten es so erzeugen: