In OpenSSL versuche ich die Zertifikatkette während des Handshakes zu überprüfen.
Wenn der Client eine Verbindung schaffen I che SSL_CTX*
und SSL*
dann stelle ich die Überprüfung Rückruf upOpenSSL kill sich bei Zertifikatvalidierungsfehler
SSL_set_verify(_ssl, SSL_VERIFY_PEER | SSL_VERIFY_CLIENT_ONCE | SSL_VERIFY_FAIL_IF_NO_PEER_CERT, verify_callback);
Und dann in der Funktion habe ich
int verify_callback(int preverify_ok, X509_STORE_CTX *x509_ctx) {
bool ok = false;
[...]
return ok ? 1 : 0;
}
(ich den Code aus dem Beispiel in GitHub kopiert)
Wenn ich es ausführe, wenn die Funktion 1 zurückgibt, ist alles in Ordnung, aber wenn es 0 zurückgibt (alias fail), stoppt der gesamte Prozess (Exitcode 0)
Ich kompiliere gerade unter cygwin64 auf Win10 x64, die aktuell sind
Was ist los mit dem, was ich mache?
Siehe auch [TLS-Client] (http://wiki.openssl.org/index.php/SSL/TLS_Client) im OpenSSL-Wiki. Der Beispielcode verfügt über einen Rückruf, der das Zertifikat ausgibt. – jww