Подавить InsecureRequestWarning: непроверенный HTTPS-запрос выполняется в Python2. 6


Я пишу скрипты в Python2. 6 с использованием pyVmomi и при использовании одного из методов подключения:

service_instance = connect.SmartConnect(host=args.ip,
                                        user=args.user,
                                        pwd=args.password)

Я получаю следующее предупреждение:

/usr/lib/python2.6/site-packages/requests/packages/urllib3/connectionpool.py:734: InsecureRequestWarning: Unverified HTTPS request is being made. Adding certificate verification is strongly advised. See: https://urllib3.readthedocs.org/en/latest/security.html
  InsecureRequestWarning)

интересно то, что у меня нет urllib3, установленного с pip (но он есть в /usr / lib / python2. 6/site-packages/requests/packages/urllib3/).

Я пробовал, как предложил здесь

import urllib3
...
urllib3.disable_warnings()

но это не меняло что угодно.

9 173

9 ответов:

обновление (2017-07-28): если вы используете современную версию этих библиотек, они уже не могут быть проданы. Если это так, то вам нужно будет только сделать:

import urllib3
urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)

если вы все еще используете версию запросов, которые поставщики urllib3 внутри него (например, исходный вопрос), то вы можете использовать исходный ответ ниже:

оригинальный ответ:

причина делать urllib3.disable_warnings() не работает для вас, потому что это выглядит как вы используете отдельный экземпляр urllib3, поставляемый внутри запросов.

Я собираю это на основе пути здесь:/usr/lib/python2.6/site-packages/requests/packages/urllib3/connectionpool.py

, чтобы отключить предупреждения в проданы запросов urllib3, вам потребуется импортировать этот конкретный экземпляр модуля:

import requests
from requests.packages.urllib3.exceptions import InsecureRequestWarning

requests.packages.urllib3.disable_warnings(InsecureRequestWarning)

Это ответ в 2017 году. urllib3 не входит requests больше

import urllib3
urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)

правильный способ-читать соответствующий раздел по ссылке и делай, как он говорит. Путь специфический для requests (который связывает со своей собственной копией urllib3), согласно сертификаты CA-расширенное использование-запросы 2.8.1 документация:

  • requests поставляется с собственным пакетом сертификатов (но он может быть обновлен только вместе с модулем)
  • он будет использовать (после requestsv2.4.0)the certifi пакет вместо этого, если она установлена

мера безопасности проверки сертификата HTTPS-это не то, что нужно отбросить беззаботно. Атака "человек в середине", которую она предотвращает, защищает вас от третьей стороны, например потягивая вирус в или подделка или воровство ваш данных.

который, с сегодняшними поддерживаемыми правительством глобальными хакерскими операциями, такими как Индивидуальные Операции Доступа и Великий Брандмауэр Китая что целевая сетевая инфраструктура, более вероятно, чем вы думаете.

на это github комментарий, можно отключить urllib3 предупреждения запросу через requests в 1-liner:

requests.packages.urllib3.disable_warnings()

это будет подавлять все предупреждения, хотя, не только InsecureRequest (т. е. он также будет подавлять InsecurePlatform etc). В тех случаях, когда мы просто хотим, чтобы вещи работали, я нахожу краткость удобной.

для нетерпеливых, быстрый способ отключить python непроверенный HTTPS предупреждение:

export PYTHONWARNINGS="ignore:Unverified HTTPS request"

У меня была аналогичная проблема с клиентом PyVmomi. С Python версии 2.7.9, я решил эту проблему со следующей строкой кода:

default_sslContext = ssl._create_unverified_context()
self.client = \
                Client(<vcenterip>, username=<username>, password=<passwd>,
                       sslContext=default_sslContext )

обратите внимание, что для этого вам нужен Python 2.7.9 по крайней мере.

почему бы не использовать pyvmomi исходная функцияSmartConnectNoSSL. Они добавил эта функция на June 14, 2016 и назвал его ConnectNoSSL,через день после они изменили имя к SmartConnectNoSSL, используйте это вместо того, чтобы передавать предупреждение с ненужными строками кода в вашем проекте?

предоставляет стандартный способ подключения к указанному серверу без SSL проверка. Полезно при подключении к серверам с самозаверяющими сертификатами или когда вы хотите полностью игнорировать SSL

service_instance = connect.SmartConnectNoSSL(host=args.ip,
                                             user=args.user,
                                             pwd=args.password)

на Python 2.7

добавьте переменную среды PYTHONWARNINGS в качестве ключа и соответствующее значение, которое следует игнорировать, например:

os.environ['PYTHONWARNINGS']="ignore:Unverified HTTPS request"

решена проблема на моем MacBook:

pip install certifi

или

pip3 install certifi