OpenSSL在证书验证错误时自行终止

时间:2016-07-28 21:56:43

标签: c++ ssl openssl

在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下编译,这是最新的

我在做什么有什么问题?

1 个答案:

答案 0 :(得分:0)

文档的答案是:

  

verify_callback的返回值控制进一步验证过程的策略。如果verify_callback返回0,则验证过程立即停止,并显示“验证失败”状态。如果设置了SSL_VERIFY_PEER,则会向对等方发送验证失败警报​​,并终止TLS / SSL握手。

取自: https://www.openssl.org/docs/manmaster/ssl/SSL_CTX_set_verify.html

所以也许你错过了一个例外或其他什么。