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.3 Sicherer Umgang <strong>mit</strong> X.509-Zertifikaten 379<br />

76 {<br />

77 /* Fehlermeldung ausgeben */<br />

78 printf( "Failed to verify certificate: %s\n",<br />

79 X509_verify_cert_error_string( error ) );<br />

80 if( depth > VERIFY_DEPTH )<br />

81 printf( "Maximum depth %d, current depth %d.\n",<br />

82 VERIFY_DEPTH , depth );<br />

83<br />

84 /* zugehöriges Zertifikat bestimmen */<br />

85 if( cert = X509_STORE_CTX_get_current_cert( x509ctx ) )<br />

86 {<br />

87 /* Zusatzinfos zu Subject <strong>und</strong> Issuer er<strong>mit</strong>teln ... */<br />

88 subject = X509_get_subject_name( cert );<br />

89 issuer = X509_get_issuer_name( cert );<br />

90<br />

91 /* ... <strong>und</strong> ausgeben */<br />

92 if( subject )<br />

93 {<br />

94 printf( "Certificate subject:\n" );<br />

95 X509_NAME_print_ex_fp( stdout , subject , 2,<br />

96 XN_FLAG_MULTILINE );<br />

97 printf( "\n" );<br />

98 }<br />

99 if( issuer )<br />

100 {<br />

101 printf( "Certificate issuer:\n" );<br />

102 X509_NAME_print_ex_fp( stdout , issuer , 2,<br />

103 XN_FLAG_MULTILINE );<br />

104 printf( "\n" );<br />

105 }<br />

106 }<br />

107 }<br />

108<br />

109 return( ok );<br />

110 }<br />

74–82<br />

84–107<br />

109<br />

Sofern die Open<strong>SSL</strong>-interne Zertifikatsprüfung einen Fehler ergeben hat, protokolliert<br />

die Callback-Funktion die Ursache für die geplatzte Bestätigung<br />

des Zertifikats. Für den Fall, daß die maximale Länge der Zertifizierungskette<br />

überschritten wurde, wird zusätzlich zur Fehlermeldung auch noch die aktuelle<br />

Tiefe sowie die maximal erlaubte Tiefe der Zertifikatshierarchie ausgegeben.<br />

Anschließend er<strong>mit</strong>telt die verify_cert()-Funktion das überprüfte Zertifikat<br />

<strong>und</strong> extrahiert die Distinguished Names für sowohl die Zertifizierungsstelle<br />

als auch den Zertifikatsnehmer <strong>und</strong> gibt diese, sofern erfolgreich er<strong>mit</strong>telt, als<br />

zusätzliche Information aus.<br />

Durch ihren Rückgabewert zeigt die Callback-Funktion an, ob die Überprüfung<br />

des Zertifikats erfolgreich war oder fehlgeschlagen ist. Sofern bei

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

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!