关于 c:OpenSSL – 在证书链中查找错误深度 | 珊瑚贝

OpenSSL – find error depth in certificate chain


我正在编写一个 C 程序来使用 OpenSSL 检索和验证 x509 证书链。这是我第一次用 C 编程,我非常依赖 http://www.ibm.com/developerworks/linux/library/l-openssl/

上的教程

我可以使用以下代码从连接中检索任何错误代码:

1
2
3
4
5
6
7
8
if (SSL_get_verify_result(ssl) != X509_V_OK)
{
    printf(\
Error verifying certificate\
);
    fprintf(stderr,“Error Code: %lu\
, SSL_get_verify_result(ssl));
}

但是我还需要知道哪个证书是违规的。有没有办法像命令行 s_client 那样确定错误的链深度?任何示例代码将不胜感激。


我在 Chandra、Messier 和 Viega 的”使用 OpenSSL 的网络安全”中找到了答案。

它使用 SSL_CTX_set_verify 指定一个回调函数,该函数在链中每个证书的验证例程之后运行。

1
2
3
4
5
6
7
8
9
10
11
SSL_CTX_set_verify(ctx, SSL_VERIFY_PEER, verify_callback);

int verify_callback(int ok, X509_STORE_CTX * store)
{
  if (!ok) //if this particular cert had an error
  {
    int depth = X509_STORE_CTX_get_error_depth(store);
    int err = X509_STORE_CTX_get_error(store);
  }
}


来源:https://www.codenong.com/16213162/

微信公众号
手机浏览(小程序)

Warning: get_headers(): SSL operation failed with code 1. OpenSSL Error messages: error:14090086:SSL routines:ssl3_get_server_certificate:certificate verify failed in /mydata/web/wwwshanhubei/web/wp-content/themes/shanhuke/single.php on line 57

Warning: get_headers(): Failed to enable crypto in /mydata/web/wwwshanhubei/web/wp-content/themes/shanhuke/single.php on line 57

Warning: get_headers(https://static.shanhubei.com/qrcode/qrcode_viewid_8969.jpg): failed to open stream: operation failed in /mydata/web/wwwshanhubei/web/wp-content/themes/shanhuke/single.php on line 57
0
分享到:
没有账号? 忘记密码?