05.11.2013 Aufrufe

Zahn - Unix-Netzwerkprogramminerung mit Threads, Sockets und SSL

Zahn - Unix-Netzwerkprogramminerung mit Threads, Sockets und SSL

Zahn - Unix-Netzwerkprogramminerung mit Threads, Sockets und SSL

MEHR ANZEIGEN
WENIGER ANZEIGEN

Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.

YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.

388 7 Client-/Server-Programmierung <strong>mit</strong> Open<strong>SSL</strong><br />

#include<br />

<br />

int <strong>SSL</strong>_CTX_use_certificate_chain_file( <strong>SSL</strong>_CTX *ctx,<br />

const char *file );<br />

int <strong>SSL</strong>_CTX_use_PrivateKey_file( <strong>SSL</strong>_CTX *ctx,<br />

const char *file, int type );<br />

Über die Funktion <strong>SSL</strong>_CTX_use_certificate_chain_file() wird die gesamte<br />

Zertifikatskette der Zertifizierungshierarchie in den <strong>SSL</strong>-Kontext ctx<br />

geladen. Da<strong>mit</strong> die Operation reibungslos verläuft, muß die durch file referenzierte<br />

Datei in strenger, aufsteigender Reihenfolge nacheinander die X.509-<br />

Zertifikate der Zertifikatskette enthalten. Die Datei beginnt <strong>mit</strong> dem Zertifikat<br />

des Zertifikatnehmers, dem das CA-Zertifikat der ausstellenden CA folgt. Im<br />

Anschluß finden sich eventuell noch die X.509-Zertifikate weiterer, zwischengeschalteter<br />

Zertifiziungsstellen bis dann am Ende das Zertifikat der zugehörigen<br />

Wurzel-CA die Kette abschließt. Die Funktion lädt das erste Zertifikat dieser<br />

Kette, also das des Zertifikatnehmers, in den Zertifikatsspeicher des angegebenen<br />

<strong>SSL</strong>-Kontexts. Die restlichen Zertifikate werden, soweit vorhanden,<br />

im Speicher für Zertifikatsketten abgelegt. War die Operation erfolgreich, so<br />

liefert <strong>SSL</strong>_CTX_use_certificate_chain_file() den Rückgabewert 1, andernfalls<br />

den Wert 0.<br />

Der zum eigenen Zertifikat passende private Schlüssel wird über die Funktion<br />

<strong>SSL</strong>_CTX_use_PrivateKey_file() aus der Datei file in den <strong>SSL</strong>-Kontext<br />

ctx geladen. Bei Erfolg liefert die Funktion den Rückgabewert 1, andernfalls<br />

den Wert 0. In der angegebenen Datei kann der Schlüssel entweder in<br />

der lesbaren, Base64-kodierten PEM-Notation oder im binären ASN.1- bzw.<br />

DER-Format vorliegen. Das Flag type gibt deshalb beim Aufruf der Funktion<br />

Auskunft, in welchem Format <strong>SSL</strong>_CTX_use_PrivateKey_file() die Datei<br />

erwarten soll: die Konstanten <strong>SSL</strong>_FILETYPE_PEM <strong>und</strong> <strong>SSL</strong>_FILETYPE_ASN1<br />

stehen für die namensgleichen Formatvarianten.<br />

Aufgr<strong>und</strong> ihrer speziellen Strukturierung können in einer PEM-Datei gleich<br />

mehrere Schlüssel oder Zertifikate gespeichert werden, in ASN.1-Dateien findet<br />

dagegen immer nur jeweils ein Schlüssel oder Zertifikat Platz. Aus diesem<br />

Gr<strong>und</strong> muß eine <strong>mit</strong>tels <strong>SSL</strong>_CTX_use_certificate_chain_file() geladene<br />

Zertifikatskette immer im PEM-Format vorliegen (<strong>und</strong> der Parameter type<br />

kann bei dieser Funktion entfallen). Findet <strong>SSL</strong>_CTX_use_PrivateKey_file()<br />

in einer PEM-Datei mehrere private Schlüssel, so wird lediglich der erste<br />

Schlüssel aus der Datei in den <strong>SSL</strong>-Kontext geladen.<br />

Die absolute Geheimhaltung des privaten Schlüssels ist bezüglich der Sicherheit<br />

der eingesetzten krytographischen Verfahren das A <strong>und</strong> O, der Schlüssel<br />

darf niemals in falsche Hände geraten. Aus diesem Gr<strong>und</strong> empfiehlt es sich<br />

eigentlich, den Schlüssel nur in verschlüsselter Form auf einem Computersystem<br />

zu speichern. Dies bedeutet, daß der private Schlüssel vor dem ersten

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!