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.

A.2 Barrieren <strong>mit</strong> POSIX-<strong>Threads</strong> 415<br />

CA-Zertifikate verschiedener Zertifizierungsstellen, so können diese wie folgt<br />

in eine gemeinsame Zertifikatsdatei CAfile.pem kopiert werden:<br />

$ cat > CAfile.pem<br />

$ for i in cacert1.pem cacert2.pem cacert3.pem; do<br />

$ openssl x509 -in $i -text >> CAfile.pem<br />

$ done<br />

Alternativ dazu können die drei Zertifikate auch in ein gemeinsames Zertifikatsverzeichnis<br />

kopiert werden. In diesem Fall identifiziert Open<strong>SSL</strong> die<br />

gesuchten CA-Zertifikate im Rahmen der Zertifikatsüberprüfung über ihren<br />

Hashwert. Aus diesem Gr<strong>und</strong> müssen die Zertifikate entweder nach ihrem<br />

Hashwert benannt oder über einen (symbolischen) Link <strong>mit</strong> dem Hashwert<br />

verknüpft werden. Praktischerweise stellt Open<strong>SSL</strong> <strong>mit</strong> dem c_rehash-<br />

Kommando gleich das passende Hilfsprogramm zur Verfügung.<br />

Sollen die CA-Zertifikate der vertrauenswürdigen Zertifizierungsstellen also<br />

z. B. im Verzeichnis /etc/ssl/certs hinterlegt werden, so läßt sich dies wie<br />

folgt erreichen:<br />

$ cp cacert1.pem cacert2.pem cacert3.pem /etc/ssl/certs<br />

$ c_rehash /etc/ssl/certs<br />

In vielen Installationen ist das Verzeichnis /etc/ssl/certs als Standardverzeichnis<br />

für die vom Rechnersystem als vertrauenswürdig eingestuften Zertifizierungsstellen<br />

eingestellt. Sämtliche CAs, deren Zertifikate in diesem Verzeichnis<br />

abgelegt <strong>und</strong> <strong>mit</strong>tels c_rehash verlinkt sind, werden dann systemweit<br />

als vertrauenswürdig betrachtet.<br />

A.2 Barrieren <strong>mit</strong> POSIX-<strong>Threads</strong><br />

In Abschnitt 5.1.3 haben wir auf die Hilfe einer Barriere zurückgegriffen, um<br />

die <strong>Threads</strong> aus dem Beispiel-Client zu koordinieren <strong>und</strong> dann z. B. gleichzeitig<br />

auf den kontaktierten Server losstürmen zu lassen. Barrieren oder Sperren<br />

sind einfache Synchronisationspri<strong>mit</strong>ive für nebenläufige Handlungsabläufe,<br />

die es ermöglichen, den Programmfluß einer Gruppe von <strong>Threads</strong> zusammenzuhalten.<br />

Mit der Hilfe von Barrieren kann ein nebenläufiges Programm<br />

gewährleisten, daß erst alle <strong>Threads</strong>, die gemeinsam an einer Aufgabe arbeiten,<br />

einen bestimmten Synchronisationspunkt im Programm erreicht haben<br />

müssen, bevor auch nur ein einziger Thread <strong>mit</strong> seiner Arbeit fortfahren kann.<br />

Der Kern einer Barriere ist ein Zähler, der darüber Buch führt, wieviele<br />

<strong>Threads</strong> die Barriere bereits erreicht haben. Der Zähler wird dazu <strong>mit</strong> der<br />

Anzahl der zu erwartenden <strong>Threads</strong> initialisiert <strong>und</strong> beim Eintreffen jedes weiteren<br />

<strong>Threads</strong> um jeweils eins dekrementiert. Erst wenn der Zähler rückwärts

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

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!