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

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을 가져오고 경고를 비활성화하거나 인증서를 제공하려고합니다.



답변

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

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에서 아무것도 설치할 수 없습니다, 고정 될 수있다 이 단계별 가이드 를 수동으로 추가 파이썬 패키지를 배포 할 수 있습니다.


답변

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

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

pip install --upgrade ndg-httpsclient 

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

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


답변

프로덕션에서는 사용하지 않고 일부 테스트 러너 만 사용합니다. 그리고 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)


답변

당신이 경우 업그레이드 할 수 없습니다 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


답변

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

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.6.6으로 제한되어 있습니다). pip에 전달하는 간단한 스위치에서 답을 찾았습니다.

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

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

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


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


답변

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

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