Как устранить ошибку SSL-сертификата при установке PIP?

Когда я пытаюсь установить PIP с помощью загруженного пакета с bootstrap.pypa.io, я получаю ошибку SSL-сертификата. Я проследовал за другими постами и попытался сделать это, отключив проверку сертификата в /etc/python/cert-verification.cfg и попытался использовать PYTHONHTTPSVERIFY=0 но это, похоже, не работает, и, наконец, я решил задать эти вопросы, потому что другие посты не очень помогают моему делу.

У меня есть следующая среда:

 OS: centos-release-7-5.1804.1.el7.centos.x86_64 

Пакеты Python:

 [root@localhost ~]# yum list installed|grep python dbus-python.x86_64 1.1.1-9.el7 @anaconda libselinux-python.x86_64 2.5-12.el7 @anaconda newt-python.x86_64 0.52.15-4.el7 @anaconda python.x86_64 2.7.5-69.el7_5 @updates python-backports.x86_64 1.0-8.el7 @base python-backports-ssl_match_hostname.noarch python-configobj.noarch 4.7.2-7.el7 @anaconda python-decorator.noarch 3.4.0-3.el7 @anaconda python-firewall.noarch 0.4.4.4-14.el7 @anaconda python-gobject-base.x86_64 3.22.0-1.el7_4.1 @anaconda python-iniparse.noarch 0.4-9.el7 @anaconda python-ipaddress.noarch 1.0.16-2.el7 @base python-libs.x86_64 2.7.5-69.el7_5 @updates python-linux-procfs.noarch 0.4.9-3.el7 @anaconda python-perf.x86_64 3.10.0-862.9.1.el7 @updates python-pycurl.x86_64 7.19.0-19.el7 @anaconda python-pyudev.noarch 0.15-9.el7 @anaconda python-schedutils.x86_64 0.4-6.el7 @anaconda python-setuptools.noarch 0.9.8-7.el7 @base python-slip.noarch 0.4.0-4.el7 @anaconda python-slip-dbus.noarch 0.4.0-4.el7 @anaconda python-urlgrabber.noarch 3.10-8.el7 @anaconda python-wheel.noarch 0.24.0-2.el7 @epel rpm-python.x86_64 4.11.3-32.el7 @anaconda 

Ниже приведены шаги и ошибки:

 [root@localhost ~]# curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 100 1604k 100 1604k 0 0 73257 0 0:00:22 0:00:22 --:--:-- 72502 [root@localhost ~]# [root@localhost ~]# PYTHONHTTPSVERIFY=0 python get-pip.py Collecting pip Retrying (Retry(total=4, connect=None, read=None, redirect=None, status=None)) after connection broken by 'SSLError(SSLError(1, u'[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:579)'),)': /packages/5f/25/e52d3f31441505a5f3af41213346e5b6c221c9e086a166f3703d2ddaf940/pip-18.0-py2.py3-none-any.whl Retrying (Retry(total=3, connect=None, read=None, redirect=None, status=None)) after connection broken by 'SSLError(SSLError(1, u'[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:579)'),)': /packages/5f/25/e52d3f31441505a5f3af41213346e5b6c221c9e086a166f3703d2ddaf940/pip-18.0-py2.py3-none-any.whl Retrying (Retry(total=2, connect=None, read=None, redirect=None, status=None)) after connection broken by 'SSLError(SSLError(1, u'[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:579)'),)': /packages/5f/25/e52d3f31441505a5f3af41213346e5b6c221c9e086a166f3703d2ddaf940/pip-18.0-py2.py3-none-any.whl Retrying (Retry(total=1, connect=None, read=None, redirect=None, status=None)) after connection broken by 'SSLError(SSLError(1, u'[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:579)'),)': /packages/5f/25/e52d3f31441505a5f3af41213346e5b6c221c9e086a166f3703d2ddaf940/pip-18.0-py2.py3-none-any.whl Retrying (Retry(total=0, connect=None, read=None, redirect=None, status=None)) after connection broken by 'SSLError(SSLError(1, u'[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:579)'),)': /packages/5f/25/e52d3f31441505a5f3af41213346e5b6c221c9e086a166f3703d2ddaf940/pip-18.0-py2.py3-none-any.whl Could not install packages due to an EnvironmentError: HTTPSConnectionPool(host='files.pythonhosted.org', port=443): Max retries exceeded with url: /packages/5f/25/e52d3f31441505a5f3af41213346e5b6c221c9e086a166f3703d2ddaf940/pip-18.0-py2.py3-none-any.whl (Caused by SSLError(SSLError(1, u'[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:579)'),)) 

Я хотел бы добавить, что Python был предварительно установлен с операционной системой, и я пытаюсь установить PIP напрямую. Я попытался установить из epel-repo, но я получаю более старую версию, и когда я пытаюсь обновить ее (потому что без обновления я получаю сообщение об ошибке при установке новой версии PIP), я получаю ту же ошибку.

Кто-нибудь может подсказать, как это исправить?

    В вашей ситуации есть что-то, что не складывается. Я просто выполнил те же команды, что и вы, в CentOS 7.5 VM, и они работали без проблем:

    версия для ОС

     $ cat /etc/redhat-release CentOS Linux release 7.5.1804 (Core) 

    скачать

     $ curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 100 1604k 100 1604k 0 0 1676k 0 --:--:-- --:--:-- --:--:-- 1676k 

    устанавливать

     $ PYTHONHTTPSVERIFY=0 python get-pip.py Collecting pip Downloading https://files.pythonhosted.org/packages/5f/25/e52d3f31441505a5f3af41213346e5b6c221c9e086a166f3703d2ddaf940/pip-18.0-py2.py3-none-any.whl (1.3MB) 100% |████████████████████████████████| 1.3MB 7.4MB/s Collecting wheel Downloading https://files.pythonhosted.org/packages/81/30/e935244ca6165187ae8be876b6316ae201b71485538ffac1d718843025a9/wheel-0.31.1-py2.py3-none-any.whl (41kB) 100% |████████████████████████████████| 51kB 4.4MB/s Installing collected packages: pip, wheel Found existing installation: pip 10.0.1 Uninstalling pip-10.0.1: Successfully uninstalled pip-10.0.1 Successfully installed pip-18.0 wheel-0.31.1 

    Временное решение

    Чтобы обойти эту проблему, вы можете изменить следующий файл в Linux / Unix, чтобы pip просто доверял этому хосту:

     $ cat ~/.pip/pip.conf [global] trusted-host = files.pythonhosted.org bootstrap.pypa.io 

    Или просто сделать это как раз: bootstrap.pypa.io

    Зачем мне это нужно?

    Вероятно, либо страна, в которой вы находитесь, либо корпоративный брандмауэр вставляют себя в качестве доверенного хоста и связываются с фактическим хостом, откуда поступают данные. Это обычно наносит ущерб SSL-сертификатам, поскольку они include имя хоста / домена, для которого они явно созданы.

    Совет по отладке

    Когда вы сталкиваетесь с такими проблемами в Python, вы всегда можете включить подробное ведение журнала с помощью ключей -vvv :

     $ PYTHONHTTPSVERIFY=0 python -vvv get-pip.py |& less # installing zipimport hook import zipimport # builtin # installed zipimport hook # trying /usr/lib64/python2.7/site.so # trying /usr/lib64/python2.7/sitemodule.so # trying /usr/lib64/python2.7/site.py # /usr/lib64/python2.7/site.pyc matches /usr/lib64/python2.7/site.py import site # precompiled from /usr/lib64/python2.7/site.pyc # trying /usr/lib64/python2.7/os.so # trying /usr/lib64/python2.7/osmodule.so ... import pip._vendor.html5lib._ihatexml # loaded from Zip /tmp/tmpYDym4g/pip.zip/pip/_vendor/html5lib/_ihatexml.py import pip._vendor.html5lib.treebuilders.etree # loaded from Zip /tmp/tmpYDym4g/pip.zip/pip/_vendor/html5lib/treebuilders/etree.py Downloading https://files.pythonhosted.org/packages/5f/25/e52d3f31441505a5f3af41213346e5b6c221c9e086a166f3703d2ddaf940/pip-18.0-py2.py3-none-any.whl (1.3MB) Installing collected packages: pip Found existing installation: pip 18.0 Uninstalling pip-18.0: Successfully uninstalled pip-18.0 ... 

    Делая это, вы можете видеть URL-адреса, по которым get-pip.py скрипт get-pip.py .

    Рекомендации

    • Установка pip завершается с ошибкой «Ошибка подключения: сертификат [SSL: CERTIFICATE_VERIFY_FAILED] не выполнен (_ssl.c: 598)»