【问题标题】:OpenSSL - find error depth in certificate chainOpenSSL - 在证书链中查找错误深度
【发布时间】:2013-04-25 11:09:35
【问题描述】:

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

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

if (SSL_get_verify_result(ssl) != X509_V_OK)
{
    printf("\nError verifying certificate\n");
    fprintf(stderr, "Error Code: %lu\n", SSL_get_verify_result(ssl));
}

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

【问题讨论】:

    标签: c ssl openssl


    【解决方案1】:

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

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

    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);
      }
    }
    

    【讨论】:

      猜你喜欢
      • 2013-11-12
      • 1970-01-01
      • 2012-08-24
      • 1970-01-01
      • 1970-01-01
      • 2012-09-20
      • 1970-01-01
      • 2021-05-12
      • 2021-06-03
      相关资源
      最近更新 更多