InsecureRequestWarning 억제 : 파이썬 2.6에서 확인되지 않은 HTTPS 요청이 이루어지고 있음


345

pyVmomi 를 사용하고 연결 방법 중 하나를 사용하면서 Python2.6에서 스크립트를 작성 중입니다.

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)

흥미로운 점은 pip와 함께 urllib3이 설치되어 있지 않다는 것입니다 (그러나 /usr/lib/python2.6/site-packages/requests/packages/urllib3/에 있습니다 ).

나는 여기에 제안 된대로 시도했다 .

import urllib3
...
urllib3.disable_warnings()

그러나 그것은 아무것도 바뀌지 않았습니다.



글로벌 및 completly 작업 솔루션이있다 : stackoverflow.com/questions/14463277/...
jmcollin92

2
경고 : 원격 서버를 사칭하는 사람이 신경 쓰지 않으면
ivan_pozdeev

4
글쎄, 경고는 실제로 일어나는 일을 막지 못합니다 . 유효성 검사를 비활성화하지 않고 유효성 검사 부족에 대한 경고를 비활성화합니다.
dwanderson

답변:


795

PYTHONWARNINGS환경 변수 를 통해 Python 경고를 비활성화 할 수 있습니다 . 이 경우 다음을 원합니다.

export PYTHONWARNINGS="ignore:Unverified HTTPS request"

파이썬 코드 ( requests >= 2.16.0) 사용을 비활성화하려면 :

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

에 대해서는 requests < 2.16.0아래의 원래 답변을 참조하십시오.

원래 답변

요청이 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)

필자는 pyvmomi에서 수행 한 개발에 대한 블로그를 작성했으며 2014 년 10 월에이 문제를 다시 다루었습니다. elink-online.com/index.php/tag/pyvmomi
Michael Rice

37
PYTHONWARNINGS="ignore:Unverified HTTPS request"
Rahul Patil

2
완전성 :from requests.packages.urllib3.exceptions import InsecureRequestWarning
propjk007

2
이 답변은 구식입니다. 최신 버전은 Nayana Adassuriya의 답변을 참조하십시오.
Dakkaron

3
Nayana Adassuriya의 답변에서 복사했습니다 import urllib3 urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning).
사무엘

117

이는 2017 년의 해답 urllib3의 일부가 아닌 requests이상

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

7
년은 사용중인 파이썬의 개정 번호보다 수입이 적습니다.
CodeMonkey

3
예, 개정보다 년이 더 중요합니다. 이것은requests >= 2.16.0
dwanderson

누군가 이것을 시도하면 urllib3 버전을 게시 할 수 있습니다. urllib3에는 'disable_warnings'속성이 없습니다.
steff_bdh

1
이 답변에 혼란스러워합니다. 내 requests버전입니다 2.21.0그리고있다 urllib3. 나는 2.16.0`2.16.1 , and 2.17.0`을 시도했지만 모두 가지고 있었다 urllib3. 나는 그것을 시도했지만 2.4.0그에게는 없었습니다. 다시 추가 했습니까?
Mike Furlender

35

이 github에의 코멘트, 하나는 비활성화 할 수 있습니다 urllib3통해 요청 경고를 requests1 라이너 :

requests.packages.urllib3.disable_warnings()

그래야만 모든 경고 가 표시 되지 않습니다 InsecureRequest(예 : 등도 표시 되지 않음 InsecurePlatform). 작업이 필요한 경우 간결함이 편리하다는 것을 알았습니다.


4
이것은 경고를 억제하기 위해 urllib3을 가져올 필요가 없기 때문에 2.7에 가장 적합한 옵션입니다
CodeMonkey

3
requests.packages.urllib3.disable_warnings(requests.packages.urllib3.exceptions.InsecureRequestWarning)작동하는 것 같습니다.
mattalxndr

29

올바른 방법은 제공된 링크에서 관련 섹션 을 읽고 표시된 대로 수행하는 것입니다. 의 방법은 특정 requests(의 복사본과 함께 번들 urllib3에 따라,) CA 인증서 - 고급 사용법 - 2.8.1 문서를 요청합니다 :

  • requests 자체 인증서 번들과 함께 제공되지만 모듈과 함께 만 업데이트 할 수 있습니다.
  • 그것은 (이후 사용 requests v2.4.0) 패키지 가 설치되어 대신하는 경우를certifi

HTTPS 인증서 확인 보안 조치는 마음에 들지 않습니다. 중간자 (Man-in-the-middle) 공격 은 바이러스를 감염 시키 거나 데이터를 조작하거나 도용 하는 등의 제 3 자로부터 보호 해줍니다.

네트워크 액세스 를 대상으로 하는 Tailored Access OperationsGreat Firewall of China 와 같이 오늘날 정부가 지원하는 글로벌 해킹 작업 은 생각보다 가능성이 높습니다.


2.8.1 및 certifi 2015.11.20.1을 요청했지만 여전히 경고가 표시됩니다.
Alex Bartiş

3
@ AlexBartiş 이것은 당신 (또는 당신이 호출하는 코드)이 통과하면 될 수 있습니다 verify=False.
ivan_pozdeev

2
이 답변에 투표가 왜 그렇게 적습니까? 이 경고를 무시하는 것이 실제로 안전합니까?
sgryzko

1
@sgryzko 원격 서버를 사칭하는 사람이 신경 쓰지 않는 경우에만 해당됩니다. 아마도 많은 사람들이 실제로 첫 번째 답변 이상을 읽지 않거나 읽지 않아 긍정적 인 피드백주기에 기여할 것입니다. 이 답변은 거의 1 년 후에 게시되었습니다.
ivan_pozdeev

2
예, 프로덕션 환경에서 올바른 작업을 수행해야하며 오류를 맹목적으로 억제하는 것은 좋지 않습니다. 그러나 테스트 환경에서 이러한 오류를 억제하려면 완전히 유효합니다.
Vroo

12

성급하지 않은 경우, 파이썬의 미확인 HTTPS 경고를 비활성화하는 빠른 방법 :

export PYTHONWARNINGS="ignore:Unverified HTTPS request"

powershell의 경우 명령은 다음과 같습니다$env:PYTHONWARNINGS="ignore:Unverified HTTPS request"
Gwen Au

10

일부 패키지 공급 업체가 자체 urllib3 사본 인 경우 허용되는 답변이 작동하지 않습니다.이 경우 여전히 작동합니다.

import warnings

warnings.filterwarnings('ignore', message='Unverified HTTPS request')

1

PyVmomi Client와 비슷한 문제가있었습니다. 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 이상이 필요합니다.


1

왜 pyvmomi 사용하지 원래의 기능을 SmartConnectNoSSL . 그들은 추가 에이 기능을 June 14, 2016과 이름 ConnectNoSSL, 일일 후 가로 이름을 변경 SmartConnectNoSSL하는 대신 그 프로젝트에서 코드의 불필요한 라인 경고를 전달하여, 사용?

SSL 확인없이 지정된 서버에 연결하기위한 표준 방법을 제공합니다. 자체 서명 된 인증서가있는 서버에 연결하거나 SSL을 모두 무시하려는 경우에 유용합니다.

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

0

들어 파이썬 2.7

환경 변수 PYTHONWARNINGS를 키로 추가하고 다음과 같이 해당 값을 무시하십시오.

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

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.