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.

7.3 Sicherer Umgang <strong>mit</strong> X.509-Zertifikaten 371<br />

zierungsstellen hinterlegt sind. 3 Die entsprechenden Datei- <strong>und</strong> Verzeichnisnamen,<br />

in denen diese Informationen hinterlegt sind, etwa das Verzeichnis<br />

/etc/ssl/certs, sind in der Regel bereits korrekt in den Open<strong>SSL</strong>-Paketen<br />

verankert. Mit Hilfe der Funktion <strong>SSL</strong>_CTX_set_default_verify_paths()<br />

wird die ssl-Bibliothek veranlaßt, die im Rahmen der Zertifikatsprüfung<br />

benötigten öffentlichen Schlüssel vertrauenswürdiger Zertifizierungsstellen an<br />

den festgelegten Orten zu suchen. Die Funktion erwartet als einziges Argument<br />

den <strong>SSL</strong>-Kontext, in dem die Informationen verankert werden sollen.<br />

Der Rückgabewert 1 zeigt an, daß die Operation erfolgreich war, andernfalls<br />

gibt die Funktion den Wert 0 zurück.<br />

#include<br />

<br />

int <strong>SSL</strong>_CTX_set_default_verify_paths( <strong>SSL</strong>_CTX *ctx );<br />

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

const char *CAfile , const char *CApath );<br />

void <strong>SSL</strong>_CTX_set_verify( <strong>SSL</strong>_CTX *ctx, int mode,<br />

int (*verify_cb)( int status ,<br />

X509_STORE_CTX *x509ctx ) );<br />

void <strong>SSL</strong>_set_verify( <strong>SSL</strong> *ssl, int mode,<br />

int (*verify_cb)( int status ,<br />

X509_STORE_CTX *x509ctx ) );<br />

void <strong>SSL</strong>_CTX_set_verify_depth( <strong>SSL</strong>_CTX *ctx, int depth );<br />

void <strong>SSL</strong>_set_verify_depth( <strong>SSL</strong> *ssl, int depth );<br />

Neben den systemweiten Datei- <strong>und</strong> Verzeichnisnamen können <strong>mit</strong> der Funktion<br />

<strong>SSL</strong>_CTX_load_verify_locations() auch noch eigene, anwendungsspezifische<br />

Datei- <strong>und</strong> Verzeichnisnamen in den <strong>SSL</strong>-Kontext ctx eingeb<strong>und</strong>en<br />

werden. Mindestens einer der Parameter CAfile <strong>und</strong> CApath muß dabei von<br />

NULL verschieden sein. CAfile verweist dabei auf eine Datei, die ein oder mehrere<br />

CA-Zertifikate von vertrauenswürdigen Zertifizierungsstellen enthält. Die<br />

Zertifikate müssen im PEM-Format, einer Base64-kodierten Textdarstellung<br />

des Zertifikats, nacheinander in dieser Datei abgelegt sein. CApath verweist<br />

dagegen auf ein Verzeichnis, in dem die einzelnen CA-Zertifikate in jeweils<br />

eigenen Dateien hinterlegt sind. Abschnitt A.1 erläutert, wie ein solches CA-<br />

Verzeichnis aufgebaut wird. Der Rückgabewert 1 zeigt an, daß die Operation<br />

erfolgreich war, andernfalls gibt die Funktion den Wert 0 zurück.<br />

Wie bereits in Abschnitt 6.1.4 erläutert, muß während der Überprüfung eines<br />

digitalen Zertifikats u. U. eine ganze Zertifikatskette durchlaufen werden,<br />

bis <strong>mit</strong> Hilfe einer vertrauenswürdigen Zertifizierungsstelle die Gültigkeit der<br />

3 Der öffentliche Schlüssel einer Zertifizierungsstelle ist seinerseits wieder in ein<br />

Zertifikat, ein sogenanntes CA-Zertifikat, eingeb<strong>und</strong>en.

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

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!