在Python2.7.9的表单源安装后,我得到ssl.SSLError:[SSL:CERTIFICATE_VERIFY_FAILED]证书验证失败(_ssl.c:581)

帕特里克

我正在使用CentOS 6.6。因此,我没有我需要的最新(2.7系列)Python软件包。我已经从源代码安装了Python 2.7.9到/usr/local/lib/python2.7:

ll /usr/local/lib/python2.7/
total 52K
drwxr-xr-x. 2 root root 4.0K Jan 13 14:59 bin
drwxr-xr-x. 3 root root 4.0K Jan  7 15:15 include
drwxr-xr-x. 4 root root 4.0K Jan  7 15:15 lib
-rw-r--r--. 1 root root  12K Jan 14 11:46 LICENSE.txt
-rw-r--r--. 1 root root  117 Jan 14 11:46 MANIFEST.in
-rw-r--r--. 1 root root  238 Jan 14 11:46 NOTICE.txt
-rw-r--r--. 1 root root   88 Jan 14 11:46 setup.cfg
-rw-r--r--. 1 root root 2.6K Jan 14 11:46 setup.py
drwxr-xr-x. 3 root root 4.0K Jan  7 15:15 share
drwxr-xr-x. 6 root root 4.0K Jan  7 15:03 site-packages
-rw-r--r--. 1 root root  113 Jan 14 11:46 tox.ini

现在我有一个使用pysphere的脚本,它过去可以正常工作(并且在其他使用2.6和2.7的计算机上也可以正常工作),但是当我用当前设置运行它时,我得到了:

$ python main.py
Connecting to vSphere...
Traceback (most recent call last):
  File "main.py", line 51, in <module>
    server.connect(VSPHERE_IP, VSPHERE_USER, VSPHERE_PASS)
  File "/usr/local/lib/python2.7/lib/python2.7/site-packages/pysphere/vi_server.py", line 101, in connect
    request)._returnval
  File "/usr/local/lib/python2.7/lib/python2.7/site-packages/pysphere/resources/VimService_services.py", line 2170, in RetrieveServiceContent
    self.binding.Send(None, None, request, soapaction="urn:vim25/5.0", **kw)
  File "/usr/local/lib/python2.7/lib/python2.7/site-packages/pysphere/ZSI/client.py", line 295, in Send
    self.local.h.connect()
  File "/usr/local/lib/python2.7/lib/python2.7/httplib.py", line 1212, in connect
    server_hostname=server_hostname)
  File "/usr/local/lib/python2.7/lib/python2.7/ssl.py", line 350, in wrap_socket
    _context=self)
  File "/usr/local/lib/python2.7/lib/python2.7/ssl.py", line 566, in __init__
    self.do_handshake()
  File "/usr/local/lib/python2.7/lib/python2.7/ssl.py", line 788, in do_handshake
    self._sslobj.do_handshake()
ssl.SSLError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:581)

$ pip -V
pip 6.0.6 from /usr/local/lib/python2.7/lib/python2.7/site-packages (python 2.7)
$ pip freeze
Django==1.7.2
docutils==0.12
ecdsa==0.11
paramiko==1.15.2
pep8==1.5.7
pycrypto==2.6.1
Pygments==2.0.1
pysphere==0.1.7
pyvmomi==5.5.0.2014.1.1
requests==2.5.1
six==1.9.0
virtualenv==12.0.5

这里坏了什么?

幻影99w

我参加聚会晚了几年,但是我自己遇到了这个问题,并找到解决方案。如果将来有人遇到这个问题,我要发表评论。

原因为什么发生这种情况(这是Patryk的问题),是Python的httplib.HTTPSConnection以前没有默认验证SSL证书。从Python 2.7.9开始,需要SSL验证如果您的ESX服务器的SSL证书有问题,则连接将失败。

不幸的是pysphere库不再维护

假设您尝试在私有和安全的环境中使用pysphere库,则可以将以下修补程序应用于pysphere / ZSI / client.py文件:

294c294,295
<         self.local.h = transport(netloc, None, **self.transdict)
---
>         import ssl
>         self.local.h = transport(netloc, None, context=ssl._create_unverified_context(), **self.transdict)

说明:pysphere库用于httplib.HTTPSConnection建立与ESX服务器的连接。如果遇到SSL证书问题,它将失败,并带有上述异常。要恢复Python 2.7.9之前的行为,您需要告知httplib.HTTPSConnection不要验证SSL证书。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

Related 相关文章

热门标签

归档