为什么两个VirtualEnv中只有一个命中了“OpenSSL.SSL.Error错误:'PEM routines','PEM\u read\u bio',…'SSL\ CTX\使用\私钥\文件“…”?

2024-06-03 01:39:57 发布

您现在位置:Python中文网/ 问答频道 /正文

在更新virtualenv的过程中,我似乎在ssl库中遇到了一些问题。以前在两个virtualenv中工作的代码现在只在一个virtualenv中工作;在我更改的一个virtualenv中,下面显示的代码将生成后续错误。你知道吗

我没有看到任何明显的差异之间的virtualnvs似乎相关或匹配我在许多类似问题的案例中发现的。有人能提出其他的调查线索吗,或者有什么明显的线索吗?你知道吗

在两个环境中我们都有

$ python --version
Python 2.7.6

下面是对requests.get()的高级调用和SSL错误的要点。再往下,我在两个env中包含了pip freeze的diff。你知道吗

response = requests.get(
    query,
    auth=(self.user, self.token),
    verify=True,
    cert=self._requests_ca_bundle
    )

产生错误:

  File "/home/security/.virtualenvs/nimbus/local/lib/python2.7/site-packages/nimbus/gitter.py", line 338, in call_api
    cert=self._requests_ca_bundle
  File "/home/security/.virtualenvs/nimbus/local/lib/python2.7/site-packages/requests/api.py", line 72, in get
    return request('get', url, params=params, **kwargs)
...
  File "/home/security/.virtualenvs/nimbus/local/lib/python2.7/site-packages/urllib3/contrib/pyopenssl.py", line 421, in load_cert_chain
    self._ctx.use_privatekey_file(keyfile or certfile)
  File "/home/security/.virtualenvs/nimbus/local/lib/python2.7/site-packages/OpenSSL/SSL.py", line 798, in use_privatekey_file
    self._raise_passphrase_exception()
...
OpenSSL.SSL.Error: [('PEM routines', 'PEM_read_bio', 'no start line'), ('SSL routines', 'SSL_CTX_use_PrivateKey_file', 'PEM lib’)]

下面是在每个环境中通过参数cert=self._requests_ca_bundle发送给requests.get()的cert(来自certifi);diff为空。你知道吗

$ wc /tmp/*.cacert*
  5246  10849 321421 /tmp/b.cacert.pem
  5245  10849 321421 /tmp/s.cacert.pem

下面是两个virtualenv中pip freeze输出的差异。你知道吗

This virtualenv works.              This virtualenv doesn't.

appdirs==1.4.3                    <
asn1crypto==0.22.0                  asn1crypto==0.22.0
                                  > awscli==1.11.66
                                  > botocore==1.5.29
certifi==2017.4.17                  certifi==2017.4.17
cffi==1.10.0                        cffi==1.10.0
chardet==3.0.4                      chardet==3.0.4
                                  > colorama==0.3.7
cryptography==1.8.1                 cryptography==1.8.1
cssselect==1.0.1                    cssselect==1.0.1
cssutils==1.0.2                     cssutils==1.0.2
                                  > docutils==0.13.1
enum34==1.1.6                       enum34==1.1.6
                                  > futures==3.0.5
idna==2.5                           idna==2.5
ipaddress==1.0.18                   ipaddress==1.0.18
                                  > jmespath==0.9.2
lxml==3.8.0                         lxml==3.8.0
Mako==1.0.6                         Mako==1.0.6
MarkupSafe==1.0                     MarkupSafe==1.0
ndg-httpsclient==0.4.2              ndg-httpsclient==0.4.2
nimbus==1.1.7                       nimbus==1.1.7
packaging==16.8                     packaging==16.8
premailer==3.0.1                    premailer==3.0.1
pyasn1==0.2.3                       pyasn1==0.2.3
pycparser==2.17                     pycparser==2.17
pyOpenSSL==17.0.0                   pyOpenSSL==17.0.0
pyparsing==2.2.0                    pyparsing==2.2.0
                                  > python-dateutil==2.6.0
                                  > PyYAML==3.12
requests==2.17.3                    requests==2.17.3
                                  > rsa==3.4.2
                                  > s3transfer==0.1.10
sh==1.12.14                         sh==1.12.14
six==1.10.0                         six==1.10.0
urllib3==1.21.1                     urllib3==1.21.1

Tags: selfsslhomegetcertvirtualenvliblocal