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.2 Der <strong>SSL</strong>-Kontext 365<br />

#include<br />

<br />

long <strong>SSL</strong>_CTX_set_options( <strong>SSL</strong>_CTX *ctx, long options );<br />

long <strong>SSL</strong>_set_options( <strong>SSL</strong> *ssl, long options );<br />

long <strong>SSL</strong>_CTX_set_mode( <strong>SSL</strong>_CTX *ctx, long mode );<br />

long <strong>SSL</strong>_set_mode( <strong>SSL</strong> *ssl, long mode );<br />

Die Funktion <strong>SSL</strong>_CTX_set_options() (<strong>und</strong> natürlich auch ihre Schwesterfunktion<br />

<strong>SSL</strong>_set_options()) kennt eine Menge verschiedener <strong>SSL</strong>-Optionen.<br />

Mit einem Teil der Optionen kann der ssl-Bibliothek erlaubt werden, verschiedene<br />

Fehler, die sich in diverse <strong>SSL</strong>-Implemtierungen geschlichen haben,<br />

individuell zu erkennen <strong>und</strong> zu umkurven. Dadurch läßt sich die Kompatibilität<br />

zu diversen Kommunikationspartnern erhöhen. Praktischerweise gibt es<br />

die Option <strong>SSL</strong>_OP_ALL, die alle Fehlerbereinigungsoptionen in einer einzigen<br />

Option zusammenfaßt. Außerdem läßt sich über die <strong>SSL</strong>-Optionen steuern,<br />

welche <strong>SSL</strong>/TLS-Protokollversionen das Programm unterstützen soll: Mittels<br />

<strong>SSL</strong>_OP_NO_<strong>SSL</strong>v2, <strong>SSL</strong>_OP_NO_<strong>SSL</strong>v3 <strong>und</strong> <strong>SSL</strong>_OP_NO_TLSv1 kann die Unterstützung<br />

für bestimmte Protokollversionen explizit abgeschaltet werden.<br />

Als Rückgabewert liefern <strong>SSL</strong>_CTX_set_options() <strong>und</strong> <strong>SSL</strong>_set_options()<br />

ein Bitfeld <strong>mit</strong> der neu gesetzten Menge an Optionen für den <strong>SSL</strong>-Kontext<br />

bzw. die <strong>SSL</strong>-Verbindung. Optionen, die bereits vor dem Aufruf der Funktionen<br />

gesetzt waren, bleiben übrigens erhalten, d. h. daß die Optionen, die<br />

einmal für einen Kontext bzw. eine Verbindung gesetzt wurden, nicht mehr<br />

zurückgenommen werden können.<br />

Mit Hilfe der <strong>SSL</strong>_CTX_set_mode()-Funktion bzw. ihrer Schwesterfunktion<br />

<strong>SSL</strong>_set_mode() können wir Open<strong>SSL</strong> veranlassen, keine Wiederholungsanforderungen<br />

an die Anwendung weiterzuleiten, sondern diese ggf. selbst abzuwickeln.<br />

Dazu aktivieren wir den entsprechenden Modus durch Setzen von<br />

<strong>SSL</strong>_MODE_AUTO_RETRY. <strong>SSL</strong>_CTX_set_mode() wirkt wieder auf dem übergebenen<br />

Kontext <strong>und</strong> bestimmt da<strong>mit</strong> das Verhalten aller später davon abgeleiteten<br />

<strong>SSL</strong>-Verbindungen, während <strong>SSL</strong>_set_mode() lediglich die referenzierte<br />

<strong>SSL</strong>-Verbindung verändert. Auch hier gilt, daß ein einmal für den Kontext<br />

oder eine einzelne Verbindung aktiviertes Verhalten nicht mehr zurückgenommen<br />

werden kann. Beide Funktionen geben als Rückgabewert die Menge der<br />

aktivierten Modi als Bitfeld zurück.<br />

Als letztes werfen wir nun noch einen Blick auf die angebotenen kryptographischen<br />

Verfahren, die zu sogenannten Chiffrenfolgen (Cipher Suites) zusammengefaßt<br />

werden. Eine Chiffrenfolge spezifiziert jeweils einen Satz von<br />

kryptographischen Algorithmen, die für die symmetrische Verschlüsselung<br />

der Nutzdaten, den Schlüsselaustausch sowie die Integritäts- <strong>und</strong> Authentizitätssicherung<br />

eingesetzt werden. Die beim Verbindungsaufbau <strong>und</strong> bei<br />

der Kommunikation eingesetzten Verfahren können von der Anwendung explizit<br />

kontrolliert werden. Open<strong>SSL</strong> stellt hierzu die beiden Hilfsfunktionen

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

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!