如何在客户端处理传统的OCSP和OCSP装订

时间:2016-12-21 16:25:17

标签: c openssl ssl-certificate ocsp

目前,我有一个实现,我在verify_callback(int preverify_ok, X509_STORE_CTX *x509_ctx)函数中为每个中间和终端实体证书发送OCSP请求。使用verify_callback函数设置SSL_CTX_set_verify()函数。

现在,我想在我的实现中添加OCSP装订。我看到关于如何包含OCSP Stapling的帖子OpenSSL certificate revocation check in client program using OCSP stapling

添加上述OCSP回调的问题是首先在OCSP Stapling回调函数之前调用verify_callback()

我的问题是如何以这样的方式拥有它们,如果服务器没有OCSP装订响应,那么客户端将自己发送OCSP请求。

在我们到达verify_callback()功能之前,有没有办法检查是否支持OCSP装订?

1 个答案:

答案 0 :(得分:0)

我不确定这是否合理。 OCSP装订的要点是响应被附加到初始TLS握手中,参见Wikipedia。因此,必须在评估其内容之前建立TLS握手的有效性。因此,OpenSSL首先触发verify_callback()来验证握手本身,然后(如果发现握手有效)触发OCSP回调函数,以便您验证握手中包含的附加数据。

否则,如果TLS握手失败,为什么还需要提交任何传统的OCSP请求呢?

如果您坚持手动向第三方提交OCSP请求,则需要在TLS握手完成之后(可能在您发送该连接上的任何其他数据或处理您收到的任何数据之前)完成此操作。或者在您尝试连接到远程服务器之前(当然,如果您事先知道证书) - 此工作流程将废除使用OCSP装订的需要。