【问题标题】:libcurl: Get result of libcurl requested via CURLOPT_SSL_VERIFYSTATUSlibcurl:获取通过 CURLOPT_SSL_VERIFYSTATUS 请求的 libcurl 的结果
【发布时间】:2019-05-06 14:44:26
【问题描述】:

使用 libcurl,我使用 curl_easy_setopt(<my handle>, CURLOPT_SSL_VERIFYSTATUS, 1L) 向启用了 OCSP 装订的服务器发送 HTTP 请求。

libcurl 响应代码为 0 是证书状态验证失败的必要条件,但也不是充分条件。 那么如何检查请求是否因证书状态验证失败而失败?

当然,curl 的错误缓冲区提供了请求失败的原因,但我不想在错误缓冲区中搜索 curl 的 OSCP 错误消息。

相反,我想通过设置CURLOPT_SSL_VERIFYSTATUS 直接提取我请求的 curl 信息(因为其他几个 curl 信息也是可能的)。

我只是忽略了它还是没有直接的方法来评估认证状态验证?

【问题讨论】:

    标签: libcurl ocsp


    【解决方案1】:

    随着时间的流逝,我再次发现需要为已解决的问题提供解决方案,并且我找到了一些可以解决此问题的方法,但它们对我来说似乎很不合适: 比如我可以直接查看属于reuqest的SSL对象的OCSP相关数据:

    const struct curl_tlssessioninfo* info = NULL;
    CURLcode res = curl_easy_getinfo(handle, CURLINFO_TLS_SSL_PTR, &info);
    SSL* ssl = (SSL*)info->internals;
    // check ssl->tlsext_ocsp_resp
    

    或者我可以像在 vtls/openssl.c 中的函数 verifystatus 中的 libcurl 代码中那样进行检查:

    ...
    long len = SSL_get_tlsext_status_ocsp_resp(BACKEND->handle, &status);
    rsp = d2i_OCSP_RESPONSE(NULL, &p, len);
    ....
    

    对我来说最好的办法是能够直接调用 libcurls openssl.c 中的 verifystatus 函数,但它无法从“外部”访问,这可能是有充分理由的。

    是否有人知道如何直接访问 OCSP 响应? 我也很高兴 cmets 提出我解决该问题的建议。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-01-13
      • 1970-01-01
      • 2011-08-26
      • 1970-01-01
      • 2022-08-14
      相关资源
      最近更新 更多