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.

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

2. Das Beispielprogramm reagiert nicht auf Wiederholungsanforderungen,<br />

die im Laufe der <strong>SSL</strong>-Kommunikation auftreten können. Die explizite Verarbeitung<br />

von Wiederholungsanforderungen kann durch Setzen des Attributs<br />

<strong>SSL</strong>_MODE_AUTO_RETRY umgangen werden.<br />

3. Die größte Schwäche von Beispiel 7.3 ist, daß weder die Gültigkeit des vom<br />

Server präsentierten Zertifikats geprüft wird, noch getestet wird, ob das<br />

Zertifikat von einer vertrauenswürdigen Zertifizierungsstelle stammt <strong>und</strong><br />

darüber hinaus auch nicht geklärt wird, ob das Zertifikat tatsächlich zum<br />

gewünschten Kommunikationspartner paßt. Insofern kann die aufgebaute<br />

Verbindung keinesfalls(!) als sicher“ betrachtet werden. Im Allgemeinen<br />

”<br />

sollte in einem solchen Zustand also nicht(!) <strong>mit</strong> dem Austausch vertraulicher<br />

Daten begonnen werden, aber für ein erstes Beispiel sei dieser Fauxpas<br />

an dieser Stelle ausnahmsweise erlaubt.<br />

Das Anwendungsverhalten bezüglich der ersten beiden Punkte kann, wie wir<br />

gleich sehen werden, sowohl über den <strong>SSL</strong>-Kontext als auch individuell pro<br />

<strong>SSL</strong>-Verbindung angepaßt werden. Den sorgfältigen Umgang <strong>mit</strong> Zertifikaten<br />

besprechen wir in Abschnitt 7.3.<br />

7.2.2 <strong>SSL</strong>-Optionen, <strong>SSL</strong>-Modi <strong>und</strong> Chiffrenfolgen<br />

Der <strong>mit</strong>tels <strong>SSL</strong>_CTX_new() erstellte <strong>SSL</strong>-Kontext liefert ein Gerüst für neue<br />

<strong>SSL</strong>-Verbindungen. Alle von einem Kontext abgeleiteten <strong>SSL</strong>-Verbindungen<br />

übernehmen die zuvor im Kontext verankerten Verbindungseigenschaften. Der<br />

vom <strong>SSL</strong>-Kontext vorgegebene Bauplan kann im nachhinein noch an die speziellen<br />

Anforderungen der Anwendung angepaßt werden, um z. B. Wiederholungsanforderungen<br />

bei der Ein- <strong>und</strong> Ausgabe von Daten zu vermeiden.<br />

Zur Bearbeitung des Kontexts stellt Open<strong>SSL</strong> u. a. die beiden Hilfsfunktionen<br />

<strong>SSL</strong>_CTX_set_options() <strong>und</strong> <strong>SSL</strong>_CTX_set_mode() zur Verfügung. Beide<br />

Funktionen erwarten als erstes Argument jeweils einen Zeiger auf den zu<br />

bearbeitenden <strong>SSL</strong>-Kontext. Im zweiten Argument werden die gewünschten<br />

Optionen <strong>und</strong> <strong>SSL</strong>-Modi für neue <strong>SSL</strong>-Verbindungen oder-verknüpft aufgelistet.<br />

Die neuen Verbindungseigenschaften gelten dann für alle nachfolgend<br />

vom modifizierten Kontext abgeleiteten <strong>SSL</strong>-Verbindungen. Verbindungen,<br />

die bereits zuvor aus dem Kontext erstellt wurden, bleiben von den Anpassungen<br />

unberührt. Alternativ können die gewünschten Einstellungen <strong>mit</strong> den<br />

beiden Funktionen <strong>SSL</strong>_set_options() <strong>und</strong> <strong>SSL</strong>_set_mode() auch für eine<br />

einzelne <strong>SSL</strong>-Verbindung vor dem Verbindungsaufbau individuell festgelegt<br />

werden. Hierzu erwarten die beiden Funktionen natürlich anstatt einem Zeiger<br />

auf den <strong>SSL</strong>-Kontext einen Verweis auf die <strong>SSL</strong>-Verbindung, für die die<br />

neuen Eigenschaften festgelegt werden sollen.

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

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!