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.

12 #include "openssl -util.h"<br />

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

13<br />

14 int verify_cert( int ok, X509_STORE_CTX *x509ctx );<br />

15<br />

16 <strong>SSL</strong>_CTX *openssl_create_ssl_ctx( void )<br />

17 {<br />

18 <strong>SSL</strong>_CTX *ctx;<br />

19<br />

20 /* <strong>SSL</strong>-Kontext für <strong>SSL</strong>v2 , <strong>SSL</strong>v3 <strong>und</strong> TLSv1 erstellen */<br />

21 if( ( ctx = <strong>SSL</strong>_CTX_new( <strong>SSL</strong>v23_method() ) ) == NULL )<br />

22 return( NULL );<br />

23<br />

24 /* bitte kein <strong>SSL</strong> 2.0, dafür maximale Kompatibilität */<br />

25 <strong>SSL</strong>_CTX_set_options( ctx, <strong>SSL</strong>_OP_NO_<strong>SSL</strong>v2 | <strong>SSL</strong>_OP_ALL );<br />

26<br />

27 /* Keine Wiederholungsanforderungen auf Anwendungsebene */<br />

28 <strong>SSL</strong>_CTX_set_mode( ctx, <strong>SSL</strong>_MODE_AUTO_RETRY );<br />

29<br />

30 /* schwache Verschlüsselungsalgorithmen ausschließen */<br />

31 if( ! <strong>SSL</strong>_CTX_set_cipher_list( ctx, CIPHER_LIST ) )<br />

32 {<br />

33 <strong>SSL</strong>_CTX_free( ctx );<br />

34 return( NULL );<br />

35 }<br />

36<br />

37 /* systemweite <strong>und</strong> eigene Zertifikatspeicher festlegen */<br />

38 if( ! ( <strong>SSL</strong>_CTX_set_default_verify_paths( ctx ) &&<br />

39 <strong>SSL</strong>_CTX_load_verify_locations( ctx, CAFILE , CAPATH ) ) )<br />

40 {<br />

41 <strong>SSL</strong>_CTX_free( ctx );<br />

42 return( NULL );<br />

43 }<br />

44<br />

45 /* Zertfikatsprüfung aktivieren <strong>und</strong> Callback setzen */<br />

46 <strong>SSL</strong>_CTX_set_verify( ctx, <strong>SSL</strong>_VERIFY_PEER , verify_cert );<br />

47<br />

48 /* maximale Hierarchietiefe an Zertifizierungsstellen */<br />

49 <strong>SSL</strong>_CTX_set_verify_depth( ctx, VERIFY_DEPTH + 1 );<br />

50<br />

51 return( ctx );<br />

52 }<br />

37–43<br />

Im Anschluß daran werden <strong>mit</strong>tels <strong>SSL</strong>_CTX_set_default_verify_paths()<br />

<strong>und</strong> <strong>SSL</strong>_CTX_load_verify_locations() sowohl der systemweite wie auch<br />

der anwendungsspezifische Speicher für die CA-Zertifikate vertrauenswürdiger<br />

Zertifizierungsstellen angezapft. Die lokalen Datenquellen CAFILE <strong>und</strong> CAPATH<br />

sind in openssl-util.h als Makros definiert (siehe dazu Beispiel 7.8). Sofern

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

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!