요청 패키지를 사용할 때 SSL InsecurePlatform 오류


237

Python 2.7.3 및 요청을 사용하고 있습니다. pip를 통해 요청을 설치했습니다. 최신 버전이라고 생각합니다. 저는 데비안 위지에서 뛰고 있습니다.

과거에 Requests를 여러 번 사용했지만이 문제에 직면하지는 않았지만 https 요청을 할 때 예외 RequestsInsecurePlatform발생 하는 것 같습니다 .

오류가 언급 urllib3되었지만 설치되어 있지 않습니다. 오류를 해결했는지 확인하기 위해 설치했지만 실패하지 않았습니다.

/usr/local/lib/python2.7/dist-packages/requests/packages/urllib3
/util/ssl_.py:79: 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.

내가 왜 이것을 얻는 지에 대한 아이디어가 있습니까? 오류 메시지에 지정된대로 문서를 확인했지만 문서가 urllib3을 가져오고 경고를 비활성화하거나 인증서를 제공하려고합니다.

답변:


390

다소 숨겨진 보안 기능을 사용하십시오 .

pip install requests[security] 또는 pip install pyOpenSSL ndg-httpsclient pyasn1

두 명령 모두 다음과 같은 추가 패키지를 설치합니다.

  • pyOpenSSL
  • 암호화
  • 이드 나

python-2.7.9 + 에는 필요하지 않습니다 .

경우 pip install오류와 함께 실패, 당신이 개발 패키지를 필요 여부 확인 libffi, libsslpython시스템에 설치된 배포판의 패키지 관리자를 사용하여 :

  • 데비안 / 우분투 - python-dev libffi-dev libssl-dev패키지.

  • 페도라 - openssl-devel python-devel libffi-devel패키지.

위의 배포 목록이 불완전합니다.

해결 방법 ( @TomDotTom의 원래 답변 참조 ) :

필요한 개발 패키지 중 일부를 설치할 수없는 경우 해당 경고를 비활성화하는 옵션도 있습니다.

import requests.packages.urllib3
requests.packages.urllib3.disable_warnings()

귀하의 경우 pip자체하는 것은에 의해 영향을 InsecurePlatformWarning하고 PyPI에서 아무것도 설치할 수 없습니다, 고정 될 수있다 이 단계별 가이드 를 수동으로 추가 파이썬 패키지를 배포 할 수 있습니다.


3
요청 [보안], 새 터미널, Python 2.7.3이
있는데이

45
또한 Ubuntu / Debian 시스템에 추가 라이브러리를 설치해야합니다.sudo apt-get install python-dev libffi-dev libssl-dev
therealmarv

2
"pip"자체 (v6.1에서 시작) 자체에 동일한 보안 경고가 표시됩니까?
jmster

5
쉘에 따라 다음을 입력해야 할 수도 있습니다 pip install 'requests[security]'
.

5
zshell에서 다음과 같이 말해야합니다. pip install requests \ [security \]
Amir Katz

68

요청 2.6은 2.7.9 이전의 파이썬 사용자에게 스톡 SSL 모듈 만 사용 가능하도록이 경고를 도입했습니다.

최신 버전의 파이썬으로 업그레이드 할 수 없다고 가정하면 최신 파이썬 SSL 라이브러리가 더 많이 설치됩니다.

pip install --upgrade ndg-httpsclient 

그러나 pyOpenSSL에 대한 빌드 종속성이없는 일부 시스템에서는 실패 할 수 있습니다. 데비안 시스템에서 위의 pip 명령 전에 이것을 실행하면 pyOpenSSL이 빌드하기에 충분해야합니다.

apt-get install python-dev libffi-dev libssl-dev

4
우분투 14.04 용 패키지 'python-dev libffi-dev libssl-dev'도 설치해야했습니다.
Andy

감사! 설명서에 메모를 추가했습니다. github.com/shazow/urllib3/pull/765
Wolfgang

@ 제시카 FTW! 정말 고마워요.
Neal Magee

18

프로덕션에서는 사용하지 않고 일부 테스트 러너 만 사용합니다. 그리고 urllib3 문서 를 반복하기 위해

당신이하고있는 일을 알고 있고이 경고와 다른 경고를 비활성화하고 싶다면

import requests.packages.urllib3
requests.packages.urllib3.disable_warnings()

편집 / 업데이트 :

다음도 작동해야합니다.

import logging
import requests

# turn down requests log verbosity
logging.getLogger('requests').setLevel(logging.CRITICAL)

1
이 솔루션의 문제점은 실제 문제점을 단순히 무시하고 무시한다는 것입니다. 또한 pip를 사용하여 패키지를 설치하거나 업그레이드 할 때는 작동하지 않습니다.
Jason Parham

1
우분투 1404 / 파이썬 2.7.6에서 나를 위해 작동하는 유일한 솔루션입니다. 감사합니다
Ignacio Vazquez

7

당신이 경우 업그레이드 할 수 없습니다 2.7.9로 파이썬 버전을, 그리고 억제 경고를 원하는,

'요청' 버전을 2.5.3으로 다운 그레이드 할 수 있습니다 .

sudo pip install requests==2.5.3

버전 정보 : http://fossies.org/diffs/requests/2.5.3_vs_2.6.0/requests/packages/urllib3/util/ssl_.py-diff.html


8
리디렉션 중 쿠키 처리와 관련하여 2.5.3에는 보안 문제가 있습니다.
plaes

2
이 답변을 두 번 게시하는 대신 다른 게시물을 중복으로 표시해야합니다. 나는 이제 그것을 닫았습니다.
Martijn Pieters

6
알려진 취약점 으로 인해 다운 그레이드하지 않는 의견이 두 번째 입니다.
sergiopereira

7

실제로, 당신은 이것을 시도 할 수 있습니다.

requests.post("https://www.google.com", verify=False)

요청 코드를 읽을 수 있습니다.

"C:\Python27\Lib\site-packages\requests\sessions.py"

class Session(SessionRedirectMixin):
......
 def request(self, method, url,
    params=None,
    data=None,
    headers=None,
    cookies=None,
    files=None,
    auth=None,
    timeout=None,
    allow_redirects=True,
    proxies=None,
    hooks=None,
    stream=None,
    verify=None,  # <========
    cert=None):
    """
    ...
    :param verify: (optional) if True, the SSL cert will be verified.
         A CA_BUNDLE path can also be provided.
    ...
    """

2
인증서를 확인하는 것이 위험 할 수 있는지 확인하지 않으면이 작업을 매우 조심 하십시오 !
jaapz

물론 인증서를 확인하지 않으면 위험합니다. 그러나 때로는 이것이 최후의 수단입니다. 예 : easy_install, apt-get, yum 또는 pip ... 실행 안 함, 또는 약간의 웹 크롤러 수행
zzzz zzzz

1
공유 호스팅 환경에 있으므로 파이썬을 2.7.9로 업그레이드 할 수 없으며 pip install requests [security] 및 기타 pip 설치 변형에 필요한 apt-get으로 libffi.pc를 설치할 수 없습니다 위. 이 답변은 저에게 효과적이었습니다. https 확인없이 페이지 내용을 변경 / 스푸핑 할 수 있다는 중요한 경고를 이해하는 한이 대답은 훌륭하다고 생각합니다.
Chirael

5

여기에 제공된 모든 솔루션이 도움이되지 않았습니다 (파이썬 2.6.6으로 제한되어 있습니다). pip에 전달하는 간단한 스위치에서 답을 찾았습니다.

$ sudo pip install --trusted-host pypi.python.org <module_name>

이것은 pip에게 pypi.python.org에서 모듈을 가져 오는 것이 좋다고 알려줍니다.

나에게있어 문제는 방화벽 뒤에있는 회사의 프록시가 일부 서버에 악의적 인 클라이언트처럼 보이게하는 것입니다. 만세 보안.


업데이트 : PyPi 도메인의 변경 사항과 추가 할 수있는 추가 옵션 은 @Alex 의 답변 을 참조하십시오 --trusted-host. (여기 복사 / 붙여 넣기를했지만 그의 답변이므로 +1)


마침내이 명령을 사용하여 tensorflow를 설치할 수 있습니다. 감사합니다!
pedrobisp

3

이 답변은 관련이 없지만 경고를 없애고 요청에서 경고 를 받으려면 다음을 수행하십시오.

InsecurePlatformWarning /usr/local/lib/python2.7/dist-packages/requests/packages/urllib3/util/ssl_.py:79: 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.

파이썬 코드에 다음 줄을 추가하여 비활성화 할 수 있습니다 .

requests.packages.urllib3.disable_warnings()


고마워 다른 답변들 중 어느 것도 나를 위해 일하지 않았습니다. 그런 장황한 성가신 메시지가 기본적으로 입력 될 것입니다.
Dan

1

bash먼저 (ZSH에서) 가야했습니다 . 그때

sudo -H pip install 'requests[security]' --upgrade

문제를 해결했습니다.


잘 모르겠습니다. 나는 그것이 대괄호 때문이라고 생각합니다
Martin Thoma

1

지난 주 Ubuntu 14.04 (Python 2.7.6 apt-get dist-upgrade포함) libssl1.1:amd64에서 에 포함 된 작업 을 수행 한 후 나에게 나타났습니다 deb.sury.org.

나는 certbot-auto renewcron 작업에서 실행하기 때문에 --no-self-upgrade예약되지 않은 유지 관리를 줄이기 위해을 사용합니다 . 이것이 문제의 원인이었던 것 같습니다.

오류를 해결하기 위해 내가해야 할 일은 루트가되고 ( su--login스위치 사용) certbot-auto업그레이드 자체가되었습니다. 즉 :

sudo su --login
/usr/local/bin/certbot-auto renew 
# ... Upgrading certbot-auto 0.8.1 to 0.18.2... blah blah blah ...

루트의 crontab에서 일반적으로 실행되는 것 대신 :

5 7 * * * /usr/local/bin/certbot-auto renew --quiet --no-self-upgrade

그 후, letencrypt renwals가 다시 한 번 정상적으로 실행되었습니다.


여기에 설명 된 것과 동일한 문제가 있습니다. 경고 : /usr/local/lib/python2.7/dist-packages/requests/packages/urllib3/util/ssl_.py:122 : InsecurePlatformWarning : 진정한 SSLContext 객체를 사용할 수 없습니다. 이로 인해 urllib3이 SSL을 적절하게 구성하지 못하게되며 특정 SSL 연결이 실패 할 수 있습니다. 이 문제를 해결하기 위해 최신 버전의 Python으로 업그레이드 할 수 있습니다. 자세한 내용은 urllib3.readthedocs.io/en/latest/…를 참조하십시오 . InsecurePlatformWarning 방금 다음 명령을 입력합니다 : sudo apt-get dist-upgrade 오류가 수정되었습니다.
Didierh

0

나를 위해 일하지 않고 업그레이드 핍이 필요합니다 ....

데비안 / 우분투

의존성 설치

sudo apt-get install libpython-dev libssl-dev libffi-dev

pip 업그레이드 및 패키지 설치

sudo pip install -U pip
sudo pip install -U pyopenssl ndg-httpsclient pyasn1

의존성을 제거하려면

sudo apt-get remove --purge libpython-dev libssl-dev libffi-dev
sudo apt-get autoremove

0

방금 이전 버전의 python2.7 위에 / usr / local에 python 2.7.12를 설치 한 CentOS 5 서버에서 비슷한 문제가 발생했습니다. CentOS 6 또는 7로 업그레이드하는 것은 현재이 서버에서 옵션이 아닙니다.

일부 python 2.7 모듈은 이전 버전의 python에서 여전히 존재하지만 CentOS 5 패키지에서 최신 암호화 패키지를 지원하지 않기 때문에 pip를 업그레이드하지 못했습니다.

특히 CentOS 5의 openssl 버전이 0.9.8e이기 때문에 'pip 설치 요청 [security]'이 실패했습니다. 이는 더 이상 암호화> 1.4.0에서 지원되지 않습니다.

OPs 원래 문제를 해결하려면 다음을 수행하십시오.

1) pip install 'cryptography<1.3.5,>1.3.0'.  

이것은 openssl-0.9.8e와 함께 작동하는 설치된 암호화 1.3.4입니다. cryptograpy 1.3.4는 다음 명령의 요구 사항을 충족시키기에 충분합니다.

2) pip install 'requests[security]'

이 명령은 이제 암호화> 1.4.0을 설치하지 않기 때문에 설치됩니다.

Centos 5에서는 다음 사항도 필요했습니다.

yum install openssl-devel

암호화를 구축하려면


0

아래는 Python 3.6에서 어떻게 작동하는지입니다.

import requests
import urllib3

# Suppress InsecureRequestWarning: Unverified HTTPS
urllib3.disable_warnings()


0

안전하지 않은 경고를 중지하려면 다음과 같이하십시오.

/usr/lib/python3/dist-packages/urllib3/connectionpool.py:794 : InsecureRequestWarning : 확인되지 않은 HTTPS 요청이 작성되었습니다. 인증서 확인을 추가하는 것이 좋습니다. https://urllib3.readthedocs.org/en/latest/security.html InsecureRequestWarning 참조 )

하다:

requests.METHOD("https://www.google.com", verify=False)

verify = 거짓

핵심은 다음과 같습니다.

requests.packages.urllib3.disable_warnings ()

또는

urllib3.disable_warnings ()

그러나 잠재적 인 보안 위험이 발생할 수 있음을 알아야 합니다.


0


Mac
Pycharm Community Edition 2019.3
Python 인터프리터 3.6에서 동일한 문제가 발생했습니다 .
20.0.2로 pip를 업그레이드하면 나에게 도움이되었습니다.
Pycharm --> Preferences --> Project Interpreter --> click on pip --> specify version 20.0.2 --> Install package

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