【发布时间】:2014-09-12 07:57:25
【问题描述】:
有没有办法通过 requests 库实现 OCSP 检查?
我现在看到的唯一可行的方法是使用pyOpenSSL,但这意味着必须与服务器建立单独的独立连接以获取证书,然后连接到颁发者进行验证。
然后,有没有这样的实现呢? 您是否已经解决并愿意报告它?
M2Crypto 看起来也至少是 SSL 连接的候选者,但是我不确定该库可能存在的缺点,但它看起来肯定比 requests 更底层。
旁注:
显然 Python 在更复杂的 HTTP/HTTPS 连接方面真的很糟糕。
urllib 甚至不检查 SSL/TLS 证书,而 requests 带有自己的 CA 证书集合(而不是使用系统的 CA)并且似乎不支持通过 PAC 进行代理配置。
哎呀,我什至尝试使用 Qt 的 HTTP 堆栈(它使用操作系统设置),但遇到了多个并发连接的停滞问题。
【问题讨论】:
-
您可以强制
requests使用您系统的 CA,但您必须先找到它们。您可以传入cert='/path/to/pemfile.pem'参数来执行此操作。此外,我们的 CA 证书集合是 Mozilla 的证书库,其中删除了某些证书。还构建了夜间版本,并以certifi分发。 -
我已经看到
cert选项,但据我了解,它需要一个带有 PEM 证书的文件,所以除非我运行一些使用串联的 Linux,否则这将如何与我系统的 CA 一起使用我的 CA ? Windows 没有我知道的这样的文件(Mac 也没有)。certifi只是另一个必须更新的集合,就像requests一样,尽管我想这可能更常见,因为certifi的唯一目的是提供证书而不是功能。 -
如果请求是通过
GEThttps://ocsp-endpoint/[BASE64_DER_REQUEST]或以[BASE64_DER_REQUEST]作为body键的POST 来的,服务器是否可以?
标签: python python-3.x python-requests ocsp