Hus*_*bar 5 python ssl python-3.x python-requests
我试图通过CRL或OCSP在我的python 3.6代码中(使用请求库)实施证书吊销检查:
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)
Run Code Online (Sandbox Code Playgroud)
根据我对CRL和OCSP所做的研究(请参阅此处和此处),Python中没有内置的机制可以用CRL实现证书吊销检查。可以利用ssl.VERIFY_CRL_CHECK_CHAIN,但也希望我们在客户端上手动提供crl文件,效率不是很高。作为参考,Windows上的WinHTTP库自动提取证书中的所有crl路径,并自动检查它们是否证书已被吊销。
但是,我找不到太多信息,是否在Python 3.6中是否支持OSCP检查,以及是否可以通过内置方法或第三方包轻松实现?理想情况下,Python中是否存在可以自动从服务器证书中提取crl服务器/ ocsp响应程序,然后联系相应服务以验证证书是否已被撤销的解决方案?
多谢你们!
| 归档时间: |
|
| 查看次数: |
567 次 |
| 最近记录: |