Что говорит мне документация urllib3?

Я пытаюсь развернуть облако Kilo OpenStack и получаю эту ошибку:

Выполнение '/usr/bin/openstack token error - значение формата' вернул 1: /usr/lib/python2.7/site-packages/requests/packages/urllib3/util/ssl_.py:90: InsecurePlatformWarning: правда Объект SSLContext недоступен. Это препятствует правильной настройке SSL в urllib3 и может привести к сбою некоторых SSL-соединений. Для получения дополнительной информации см.

Поэтому я перехожу к: https://urllib3.readthedocs.org/en/latest/security.html

Я обнаружил, что у меня нет доступа к версии Python лучше, чем 2.7.5, поэтому я смотрю на:

https://urllib3.readthedocs.org/en/latest/security.html

Так что делай то, что они рекомендуют мне

# pip install pyopenssl ndg-httpsclient pyasn1
/usr/lib/python2.7/site-packages/pip/_vendor/requests/packages/urllib3/util/ssl_.py:90: InsecurePlatformWarning: A true SSLContext object is not available. This prevents urllib3 from configuring SSL appropriately and may cause certain SSL connections to fail. For more information, see https://urllib3.readthedocs.org/en/latest/security.html#insecureplatformwarning.
  InsecurePlatformWarning
You are using pip version 7.1.0, however version 7.1.2 is available.
You should consider upgrading via the 'pip install --upgrade pip' command.
Requirement already satisfied (use --upgrade to upgrade): pyopenssl in /usr/lib64/python2.7/site-packages
Collecting ndg-httpsclient
/usr/lib/python2.7/site-packages/pip/_vendor/requests/packages/urllib3/util/ssl_.py:90: InsecurePlatformWarning: A true SSLContext object is not available. This prevents urllib3 from configuring SSL appropriately and may cause certain SSL connections to fail. For more information, see https://urllib3.readthedocs.org/en/latest/security.html#insecureplatformwarning.
  InsecurePlatformWarning
  Downloading ndg_httpsclient-0.4.0.tar.gz
Requirement already satisfied (use --upgrade to upgrade): pyasn1 in /usr/lib/python2.7/site-packages
Installing collected packages: ndg-httpsclient
  Running setup.py install for ndg-httpsclient
Successfully installed ndg-httpsclient-0.4.0

Документы также говорят это:

После установки пакетов вы можете указать urllib3 переключить бэкэнд ssl на PyOpenSSL с помощью inject_into_urllib3 ():

import urllib3.contrib.pyopenssl urllib3.contrib.pyopenssl.inject_into_urllib3 () Теперь вы можете продолжать использовать urllib3, как обычно.

Я не понимаю, что это значит? Есть ли какой-нибудь исходный код на Python, который мне нужен для патча?

Обновить:

Я сделал так, как предложил Джозеп, и вот что происходит:

# python
Python 2.7.5 (default, Jun 24 2015, 00:41:19) 
[GCC 4.8.3 20140911 (Red Hat 4.8.3-9)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import urllib3
>>> import pyopenssl
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ImportError: No module named pyopenssl

Все же я установил pyopenssl...

# pip install pyopenssl
Requirement already satisfied (use --upgrade to upgrade): pyopenssl in /usr/lib64/python2.7/site-packages

ОБНОВИТЬ:

Вот что произойдет, если я сделаю это...

# python
Python 2.7.5 (default, Jun 24 2015, 00:41:19) 
[GCC 4.8.3 20140911 (Red Hat 4.8.3-9)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import OpenSSL
>>> import urllib3
>>> import urllib3.contrib.pyopenssl as pyopenssl
>>> pyopenssl.inject_into_urllib3()
>>> 

1 ответ

Решение

Я понимаю, что вы используете OpenStack, который использует urllib3. Так что да, если вы хотите пойти по этому пути и "патчить" OpenStack, ищите что-то вроде import .*urllib3.* или же from urllib3 import .* и после каждого экземпляра добавляйте две строки, которые вам поручили добавить.

Другие вопросы по тегам