我有问题。 我正在使用openssl验证我的证书-x509_verify_cert()。但是此功能不使用ocsp。因此,如果没有crl,这可能是个问题。 在openssl错误中,我找到了这个定义-x509_err_ocsp_verify_needed,但我不知道它的用法。 看来对于我连接到ocsp服务器功能或类似的东西可能存在某种回调。 我也发现,据我了解,我可以将其用于我自己的验证功能,但我只需要ocsp检查。
所以我的问题是:可以问openssl使用ocsp进行验证吗?
答案 0 :(得分:0)
有可能:
openssl ocsp -issuer certchain.pem -cert cert.pem -text -url <the ocsp responder URL>
一些指向文章链接的详细信息:
https://raymii.org/s/articles/OpenSSL_Manually_Verify_a_certificate_against_an_OCSP.html
https://akshayranganath.github.io/OCSP-Validation-With-Openssl/
答案 1 :(得分:0)
OpenSSL API不提供单个API来进行OCSP验证。 OpenSSL API提供了原语,因此您可以实现自己的验证。您需要填写实现的详细信息,这可能取决于您要解决的情况。
我建议您了解openssl ocsp命令,作为您理解的基础。阅读Sanjeev答案中的链接,还提供了使用此命令的示例。
要实施OCSP验证,您需要:
(可选)您还可以缓存响应更新日期范围内的结果,以便在再次看到证书时可以简化上述过程。
您还可以将同一台OCSP服务器上的一堆服务器证书也分组为一个请求。
值得注意的是,OCSP服务器链接可能不是HTTP,并且您可能需要支持证书可能具有的任何链接类型。例如,在Windows AD企业设置中,服务器OCSP可能仅具有LDAP OCSP服务器链接。
您可能还希望看到我的answer这个问题,在这里我将讨论OCSP请求和响应处理的代码示例。
更新:
如果要检查整个链,则必须一次执行上述一个证书(尽管证书操作可以重叠)。据我所知,无法立即检查整个链条。另外,您可能会发现许多中间证书仍然不提供OCSP链接,因此无法进行检查。如果您需要这样做,那么最好缓存结果,因为您将始终遇到相同的中间证书。实际上,您可以计划一直针对您一直遇到的“已知”中间证书进行此操作。
您还继续指着我引用的“ x509_verify_cert”
应用程序很少直接调用此函数,但是它由 内部使用OpenSSL进行证书验证,包括S / MIME和 SSL / TLS代码。
所以您无论如何都不应该这样称呼自己。
似乎我连接到ocsp服务器功能可能存在某种回调。
在openssl错误中,我找到了这个定义-x509_err_ocsp_verify_needed
X509_V_ERR_OCSP_VERIFY_NEEDED已定义,并且从未在openssl代码库中使用。它旨在从用户提供的验证回调函数(即X509_STORE_CTX_set_verify_cb)中返回,以指示验证应因该错误而失败。您将如何处理这些信息取决于您自己。如果提供回调并从openssl SSL连接返回该错误,则SSL连接将终止。
还要注意,如果您添加了一个自定义验证回调,但该回调确实进行了完整的OCSP检查,则会大大降低SSL连接设置的速度。这就是为什么大多数浏览器默认情况下不执行此操作的原因,因为它会大大降低用户体验。