我尝试在python3.6代码(使用请求库)中通过CRL或OCSP实现证书吊销检查,这是:import ssl
import requests
from requests.adapters import HTTPAdapter
from requests.packages.urllib3.poolmanager import PoolManager
from requests.packages.urllib3.util import ssl_
CIPHERS = (
'RSA+AES'
)
class TlsAdapter(HTTPAdapter):
def __init__(self, ssl_options=0, **kwargs):
self.ssl_options = ssl_options
super(TlsAdapter, self).__init__(**kwargs)
def init_poolmanager(self, *pool_args, **pool_kwargs):
ctx = ssl_.create_urllib3_context(ciphers=CIPHERS, cert_reqs=ssl.CERT_REQUIRED, options=self.ssl_options)
# ctx.verify_flags = ssl.VERIFY_CRL_CHECK_CHAIN
self.poolmanager = PoolManager(*pool_args,
ssl_context=ctx,
**pool_kwargs)
session = requests.session()
adapter = TlsAdapter(ssl.OP_NO_TLSv1 | ssl.OP_NO_TLSv1_1)
session.mount("https://", adapter)
r = session.request('GET', 'https://awesome.com', verify='/etc/ssl/certs/ca-certificates.crt')
print(r)
根据我在CRL和OCSP上所做的研究(参见here),Python中没有内置的机制来使用CRL实现证书撤销检查。这个ssl.VERIFY\u CRL\u CHECK_链可以利用,但这也要求我们在客户端手动提供crl文件,这不是很有效。作为参考,windows上的WinHTTP库会自动提取证书中的所有crl路径,并自动检查证书是否已被吊销。在
然而,我找不到很多信息,在python3.6中是否支持OSCP检查,以及它是否可以通过内置方法或通过第三方包轻松实现?理想情况下,Python中是否存在能够自动从服务器证书中提取crl服务器/ocsp响应程序的解决方案,然后联系相应的服务来验证证书是否已被吊销?在
谢谢各位!在