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.

6.3 Open<strong>SSL</strong>-Basisfunktionalität 323<br />

Die Zertifizierungshierarchie wird dabei von unten (depth=0) nach oben<br />

(depth=1) gelesen.<br />

Sofern das vom Server präsentierte Zertifikat vom openssl-Kommando erfolgreich<br />

verifiziert werden konnte, steht fest, daß dieses Zertifikat von der<br />

<strong>mit</strong> -CAfile angegebenen <strong>und</strong> da<strong>mit</strong> vertrauten Zertifizierungsstelle ausgestellt<br />

wurde <strong>und</strong> daß der Server gleichzeitig im Besitz des zugehörigen privaten<br />

Schlüssels ist. Jetzt muß aber unbedingt noch überprüft werden, ob das<br />

Zertifikat auch tatsächlich zu dem Server paßt, zu dem sich das openssl-<br />

Kommando verbinden sollte. Dieser Vorgang entspricht dem Paßbildvergleich<br />

beim Überprüfen eines Personalausweis’: Passen Person <strong>und</strong> Paßbild nicht zusammen,<br />

so kann der Personalausweis nicht akzeptiert werden. Im Fall von<br />

digitalen Zertifikaten vergleicht man dazu den FQDN des kontaktierten Servers<br />

<strong>mit</strong> dem (oder den) im Zertifikat enthaltenen DNS-Namen. Im vorausgehenden<br />

Beispiel stimmt zum Glück der im Zertifikat genannte DNS-Name<br />

CN=manhattan (zugegebenermaßen kein FQDN) <strong>mit</strong> dem kontaktierten Server<br />

überein. Wir können also das Zertifikat endgültig akzeptieren <strong>und</strong> <strong>mit</strong> der<br />

sicheren Datenübertragung beginnen.<br />

6.3 Open<strong>SSL</strong>-Basisfunktionalität<br />

Für die Entwicklung <strong>SSL</strong>-fähiger Netzwerkanwendungen stellt Open<strong>SSL</strong> zwei<br />

Programmbibliotheken bereit. In der crypto-Bibliothek sind die kryprographischen<br />

Funktionen (symetrische <strong>und</strong> asymmetrische Verschlüsselungsverfahren,<br />

kryptographische Hashfunktionen, Message Authentications Codes)<br />

sowie eine Menge weiterer nützlicher Hilfsfunktionen (Ein-/Ausgabe, Datenkodierung,<br />

Verarbeitung von Zertifikaten, u. v. m.) zusammengefaßt. Die ssl-<br />

Bibliothek implementiert die verschiedenen <strong>SSL</strong>- <strong>und</strong> TLS-Protokollversionen<br />

<strong>und</strong> greift bei Bedarf auf die Funktionen der crypto-Bibliothek zurück.<br />

Über die Hilfsfunktionen der crypto-Bibliothek wird von Open<strong>SSL</strong> in den<br />

folgenden vier Bereichnen eine solide Infrastruktur für die Entwicklung <strong>SSL</strong>fähiger<br />

Netzwerkanwendungen geschaffen:<br />

1. Über die sogenannten BIO-Funktionen abstrahiert Open<strong>SSL</strong> sämtliche<br />

Ein- <strong>und</strong> Ausgabeanforderungen einer Anwendung. Ähnlich wie die Ein<strong>und</strong><br />

Ausgabefunktionen des <strong>Unix</strong>-Betriebssystems gleichmaßen dazu geeignet<br />

sind, Dateien zu bearbeiten oder Socket-Kommunikation über<br />

TCP/IP zu betreiben, vereinen die BIO-Funktionen die traditionellen Aufgaben<br />

der read()-/wite()-Funktionen <strong>mit</strong> diversen kryptographischen<br />

Zusatzaufgaben in einer einzigen API. Dadurch kann z. B. ein Programm<br />

abwechselnd <strong>mit</strong> verschlüsselten <strong>und</strong> unverschlüsselten Netzwerkverbindungen<br />

arbeiten, ohne dafür ständig zwischen Socket- <strong>und</strong> Open<strong>SSL</strong>-API<br />

wechseln zu müssen.

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

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!