【问题标题】:authority_cert_issuer and authority_cert_serial_number must both be present or both Noneauthority_cert_issuer 和 authority_cert_serial_number 必须都存在或两者都存在 无
【发布时间】:2019-04-02 16:59:40
【问题描述】:

我在 Anaconda 2018.12 中使用 Python 3.7.1 并尝试使用来自具有自定义证书的公司网络内的请求进行 get(),我有证书的 .pem,我正在使用如下:

response = requests.get('https://www.google.com', verify='ssl/rootCA.pem')
print(response)

当我运行它时,我收到以下错误:

File "run.py", line 29, in <module>
response = requests.get('https://www.google.com', verify='ssl/rootCA.pem')
File "C:\ProgramData\Anaconda3\lib\site-packages\requests\api.py", line 75, in get
return request('get', url, params=params, **kwargs)
File "C:\ProgramData\Anaconda3\lib\site-packages\requests\api.py", line 60, in request
return session.request(method=method, url=url, **kwargs)
File "C:\ProgramData\Anaconda3\lib\site-packages\requests\sessions.py", line 533, in request
resp = self.send(prep, **send_kwargs)
File "C:\ProgramData\Anaconda3\lib\site-packages\requests\sessions.py", line 646, in send
r = adapter.send(request, **kwargs)
File "C:\ProgramData\Anaconda3\lib\site-packages\requests\adapters.py", line 449, in send
timeout=timeout
File "C:\ProgramData\Anaconda3\lib\site-packages\urllib3\connectionpool.py", line 600, in urlopen
chunked=chunked)
File "C:\ProgramData\Anaconda3\lib\site-packages\urllib3\connectionpool.py", line 343, in _make_request
self._validate_conn(conn)
File "C:\ProgramData\Anaconda3\lib\site-packages\urllib3\connectionpool.py", line 839, in _validate_conn
conn.connect()
File "C:\ProgramData\Anaconda3\lib\site-packages\urllib3\connection.py", line 355, in connect
cert = self.sock.getpeercert()
File "C:\ProgramData\Anaconda3\lib\site-packages\urllib3\contrib\pyopenssl.py", line 360, in getpeercert
'subjectAltName': get_subj_alt_name(x509)
File "C:\ProgramData\Anaconda3\lib\site-packages\urllib3\contrib\pyopenssl.py", line 210, in get_subj_alt_name
ext = cert.extensions.get_extension_for_class(
File "C:\ProgramData\Anaconda3\lib\site-packages\cryptography\utils.py", line 162, in inner
result = func(instance)
File "C:\ProgramData\Anaconda3\lib\site-packages\cryptography\hazmat\backends\openssl\x509.py", line 137, in extensions
self._backend, self._x509
File "C:\ProgramData\Anaconda3\lib\site-packages\cryptography\hazmat\backends\openssl\decode_asn1.py", line 252, in parse
value = handler(backend, ext_data)
File "C:\ProgramData\Anaconda3\lib\site-packages\cryptography\hazmat\backends\openssl\decode_asn1.py", line 376, in _decode_authority_key_identifier
key_identifier, authority_cert_issuer, authority_cert_serial_number
File "C:\ProgramData\Anaconda3\lib\site-packages\cryptography\x509\extensions.py", line 152, in __init__
"authority_cert_issuer and authority_cert_serial_number "

ValueError: authority_cert_issuer and authority_cert_serial_number must both be present or both None

我的证书很简单

-----BEGIN CERTIFICATE-----
... certificate in here ...
-----END CERTIFICATE-----

而且我以前使用过这种方法,使用相同的证书(实际上是相同的 .pem),所以我不确定我必须做些什么才能导致这个问题。

【问题讨论】:

  • 你的意思是你在那个文件中有谷歌的证书链的根(GlobalSign 的自签名证书)?
  • URL 只是我自己尝试使用 requests.get() 的一个例子,据我所知,证书是我的公司,

标签: python ssl python-requests anaconda python-3.7


【解决方案1】:

我通过放弃 Anaconda 解决了这个问题,只使用 Python 并设置 REQUESTS_CA_BUNDLE 路径:

set REQUESTS_CA_BUNDLE=C:\Users\User\workspaces\ssl\rootCA.pem

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-14
    • 2021-11-06
    • 2020-04-22
    • 1970-01-01
    相关资源
    最近更新 更多