IT

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

lottoking 2020. 3. 27. 08:10
반응형

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


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()

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


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)

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

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

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

requests.packages.urllib3.disable_warnings()

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


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

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

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

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


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

export PYTHONWARNINGS="ignore:Unverified HTTPS request"

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 이상이 필요합니다.


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

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

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

들어 파이썬 2.7

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

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


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

import warnings

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

MacBook의 문제가 해결되었습니다.

pip install certifi

또는

pip3 install certifi

참고 URL : https://stackoverflow.com/questions/27981545/suppress-insecurerequestwarning-unverified-https-request-is-being-made-in-pytho

반응형