TLS와 함께 요청을 사용하면 SNI 지원이 제공되지 않습니다.
django 앱과 통신하기 위해 요청을 사용하고 있지만
내가 시도 할 때
requests.get('https://mysite.com', verify=True)
오류가 발생합니다.
호스트 이름 'mysite.com'이 '* .myhost.com', 'myhost.com'중 하나와 일치하지 않습니다.
그러나 브라우저 또는 http://www.digicert.com/help/를 보면 인증서가 멋지고 멋지게 보입니다.
내 호스트는 요청에서 SNI 지원이 부족하다고 제안했습니다 (그리고 Github는 https://github.com/kennethreitz/requests/issues/749 를 확인하는 것 같습니다 ). 누구든지 요청을 사용하여 해결 방법을 찾았습니까?
현재 버전의 요청은 SNI에서 문제가 없습니다. GitHub 문제에서 더 아래로 요구 사항을 볼 수 있습니다.
해당 패키지를 설치 한 다음 다시 시도하십시오.
편집 : 요청 v2.12.1부터 ndg-httpsclient 및 pyasn1이 더 이상 필요하지 않습니다. 이제 필수 패키지의 전체 목록은 다음과 같습니다.
- pyOpenSSL
- idna
작업에 대한 응답을 받기 위해 다음과 같은 순서로 다른 패키지를 설치해야했습니다.
- yum 설치 libffi-devel
- yum gcc 설치
- yum 설치 openssl-devel
- pip 설치 urllib3
- pip 설치 pyopenssl
- pip install ndg-httpsclient
- pip 설치 pyasn1
이와 같은 요청 모듈을 설치하십시오. 보안 패키지 추가가 설치됩니다.
pip install requests[security]
또는 Python 2.7.9 이상을 사용할 수 있습니다.
"Python 3.4의 ssl 모듈 전체가 Python 2.7.9 용으로 백 포트되었습니다. 정당화는 PEP 466을 참조하십시오."
https://www.python.org/downloads/release/python-279/
@Lukasa 대답은 현재 (github에서) 요청에 맞습니다. 그가 언급 한 pip 종속성과는 별도로 시스템에 OpenSSL을 추가하는 것을 잊지 마십시오.
배포상의 이유로 pip의 1.2.3과 같은 안정적인 요청 버전을 선호하는 경우 다음과 같이 SNI와 함께 작동하도록 원숭이 패치를 적용 할 수 있습니다.
import requests
def fileno(self):
return self.socket.fileno()
def close(self):
return self.connection.shutdown()
requests.pyopenssl.WrappedSocket.close = close
requests.pyopenssl.WrappedSocket.fileno = fileno
IP 주소로 https 사이트 액세스 에서 내 대답 복사
MAC High Sierra 및 Python 3.6.4에서 솔루션을 시도했습니다. requests toolbelt : HostHeaderSSLAdapter 1st, 안타깝게도 작동하지 않습니다. 그리고 forcediphttpsadapter를 시도 하여 마침내 작동했습니다.
작성자는 readme 부분의 모든 내용을 설명하고 샘플 스크립트를 제공했으며 쉽게 따라 할 수 있습니다.
1. 라이브러리 설치 pip install requests[security] forcediphttpsadapter
2. 샘플 스크립트를 실행합니다.
import requests
from forcediphttpsadapter.adapters import ForcedIPHTTPSAdapter
session = requests.Session()
session.mount("https://example.com", ForcedIPHTTPSAdapter(dest_ip='1.2.3.4'))
response = session.get(
'/some/path', headers={'Host': 'example.com'}, verify=False)
Note: For some cases, you may need to remove the prefix: 'www' from the url.
참고URL : https://stackoverflow.com/questions/18578439/using-requests-with-tls-doesnt-give-sni-support
'Program Tip' 카테고리의 다른 글
WPF WPF에서 SVG 파일을 아이콘으로 사용하는 올바른 방법은 무엇입니까? (0) | 2020.11.29 |
---|---|
FFMPEG mux 비디오 및 오디오 (다른 비디오의)-매핑 문제 (0) | 2020.11.29 |
TensorFlow-L2 손실이있는 정규화, 마지막 가중치가 아닌 모든 가중치에 적용하는 방법은 무엇입니까? (0) | 2020.11.29 |
C ++에서 템플릿 변수가있는 구조체 (0) | 2020.11.29 |
데이터 프레임에서 열을 정렬하여 그룹 (사 분위수, 십 분위수 등)을 빠르게 형성하는 방법 (0) | 2020.11.29 |