小编tri*_*ime的帖子

为什么OCSP装订回调称为AFTER验证回调?

我不是OpenSSL专家,但我一直在尝试编写一些代码来处理连接到SSL安全服务器的客户端的OCSP装订.我对OCSP的理解是,它用于证明所提供的证书尚未被撤销,这意味着我不需要处理管理发行人发布的CRL.

我使用SSL_CTX_set_verify来设置回调以处理证书的验证(好吧,处理OpenSSL自己的内部验证过程的异常.我假设,但是找不到证明此内部过程不检查证书撤销状态的正面证据),并且当前我的代码利用这个机会来检查发行者是否受信任(如果没有,那么发行人的发行人是受信任的,依此类推,直到链被信任或被拒绝),以及其他东西,例如证书未过期.(这也可能已经检查过,但这对我的问题并不重要).

我修改了我的代码,添加了

SSL_set_tlsext_status_type(<the ssl object>, TLSEXT_STATUSTYPE_ocsp); 
SSL_CTX_set_tlsext_status_cb(<the context>, ssl_cb_ocsp_verify);
Run Code Online (Sandbox Code Playgroud)

然后我可以得到响应并在处理程序中检查它.到现在为止还挺好!

但奇怪的是,获得SSL_CTX_set_verify处理程序,我得到了OCSP回调.对我来说(诚然天真)的想法,这意味着我有两个选择:

1)使用CRL或自己的OCSP请求检查验证回调中的撤销状态.如果我这样做,那么在OCSP回调中做任何事都没有意义,因为我已经确定了证书的撤销状态2)不要检查验证回调中的撤销状态,并希望疯狂地认为OCSP处理程序是调用.

我注意到如果来自服务器的响应不包含装订的OCSP消息,则在验证处理程序之前调用OCSP处理程序.所以有一种可能性是我最初将某个标志'no_ocsp'设置为0,然后如果我得到没有附加消息的OCSP回调,则将其设置为1.然后在验证处理程序中我可以检查这个以尝试确定是否稍后将调用OCSP处理程序.这似乎有点像一辆汽车,当任何人接近时解锁自己,然后如果接近的人把错误的钥匙插入,它会锁定自己 - 换句话说,它肯定不是"正确"的安全方式?!

因此,我必须对如何使用OCSP,OpenSSL或两者都有一些基本的误解!我究竟做错了什么?

(我已经看到类似的问题解释了如何获取 OCSP装订的消息,但我的问题是关于如何以合理的方式实际使用它,给定回调的顺序.要明确:我可以获得OCSP_RESPONSE任何问题)

openssl ocsp

6
推荐指数
1
解决办法
722
查看次数

标签 统计

ocsp ×1

openssl ×1