在OpenSSL中,我试图在握手期间检查证书链
当客户端连接时,我创建了che SSL_CTX*
和SSL*
,然后我设置了验证回调
SSL_set_verify(_ssl, SSL_VERIFY_PEER | SSL_VERIFY_CLIENT_ONCE | SSL_VERIFY_FAIL_IF_NO_PEER_CERT, verify_callback);
然后在我的功能中
int verify_callback(int preverify_ok, X509_STORE_CTX *x509_ctx) {
bool ok = false;
[...]
return ok ? 1 : 0;
}
(我从GitHub中的示例中复制了代码)
当我执行它时,如果函数返回1,一切正常但是当它返回0(也就是失败)时整个过程停止(退出代码0)
我目前正在Win10 x64上的cygwin64下编译,这是最新的
我在做什么有什么问题?
答案 0 :(得分:0)
文档的答案是:
verify_callback的返回值控制进一步验证过程的策略。如果verify_callback返回0,则验证过程立即停止,并显示“验证失败”状态。如果设置了SSL_VERIFY_PEER,则会向对等方发送验证失败警报,并终止TLS / SSL握手。
取自: https://www.openssl.org/docs/manmaster/ssl/SSL_CTX_set_verify.html
所以也许你错过了一个例外或其他什么。