为什么只有两个虚拟实体中的一个触及" OpenSSL.SSL.Error:' PEM例程' PEM_read_bio',...' SSL_CTX_use_PrivateKey_file' .. &#34 ;?

时间:2017-06-17 05:19:20

标签: python ssl exception pem certifi

在更新virtualenv的过程中,我似乎已经在ssl库或其他东西中搞砸了。以前在两个virtualenvs中的任何一个工作的代码现在只能在一个中工作;在我更改的那个中,下面显示的代码会生成后续错误。

我看不出那些看似相关的或与我在类似问题的众多案例中找到的相匹配的显着差异。任何人都可以建议任何其他调查线,或者做出明显跳出的事情吗?

在两个环境中我们都有

$ python --version
Python 2.7.6

这是对requests.get()的高级别调用以及SSL错误的要点。再向下,我在两个环境中包含了pip freeze的差异。

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’)]

此处通过参数requests.get()将每个环境中发送的证书(来自certifi)发送到cert=self._requests_ca_bundle;差异是空的。

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

这两个virtualenvs中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

0 个答案:

没有答案