微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

OCSP 请求构建器

如何解决OCSP 请求构建器

我正在使用以下发布的答案检查某些端点的 OCSP 状态: [1]:How to check OCSP client certificate revocation using Python Requests library?

我在尝试验证由 zeroSSL 颁发的证书的 oscp 状态时遇到问题,因为状态返回未经授权,但是,通过某些在线网络服务检查它返回状态为良好。

在 ocsp 请求构建器中将算法从 sha256 更改为 sha1,并且有效。这个哈希算法是在哪里定义的,它是 ocsp 服务器用来签署我假设的请求的算法吗?

我如何事先找到 ocsp 服务器使用的算法,或者是否可以预先确定 ocsp 服务器使用的哈希算法?

def Get_OCSP_ReqBuilder(clientcert,issuercert,ocsp_location):
    builder = OCSPRequestBuilder()
    req = builder.add_certificate(clientcert,SHA256()) # Replaced A SHA1() here.
    req2 = req.build() 
    req_path = base64.b64encode(req2.public_bytes(serialization.Encoding.DER))
    ocsp_requestencoded = urljoin(ocsp_location + '/',req_path.decode('ascii'))
    return ocsp_requestencoded

解决方法

据我所知,SHA1 是发出 OCSP 请求的好地方。 OCSP RFC 的早期版本要求 OCSP 响应者支持它,因此它成为默认设置。 x509 docs 表示唯一受支持的算法是 SHA1、SHA224、SHA256、SHA384 和 SHA512,因此如果您想变得健壮,您可以实施一些后备例程来检查其他算法。如果必须的话,即使尝试所有这些也不会太糟糕。

我遇到了与您相同的问题:使用 SHA256 散列但在我使用 SHA1 时成功的未授权请求的响应状态。这令人沮丧,因为协议中实际上并没有定义查询支持算法的方法的任何内容,而且响应的范围很窄且描述性不强,因此系统最终会收到无用的错误消息。与“未经授权”相比,如果响应是“格式错误的请求”,我可能会更快地追查它。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。