[PYTHON] 자체 서명 된 SSL 인증서를 신뢰하도록 Python 요청을받는 방법?
PYTHON자체 서명 된 SSL 인증서를 신뢰하도록 Python 요청을받는 방법?
import requests
data = {'foo':'bar'}
url = 'https://foo.com/bar'
r = requests.post(url, data=data)
URL이 자체 서명 된 인증서를 사용하면
requests.exceptions.SSLError: [Errno 1] _ssl.c:507: error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed
나는 다음과 같이 verify 매개 변수에 False를 전달할 수 있음을 알고있다.
r = requests.post(url, data=data, verify=False)
그러나, 내가하고자하는 것은 디스크상의 공개 키의 복사본에 대한 포인트 요청이며 그 인증서를 신뢰하도록 지시하는 것입니다.
해결법
-
==============================
1.시험:
시험:
r = requests.post(url, data=data, verify='/path/to/public_key.pem')
-
==============================
2.verify 매개 변수를 사용하면 사용자 정의 인증 기관 번들 (http://docs.python-requests.org/en/latest/user/advanced/)을 제공 할 수 있습니다.
verify 매개 변수를 사용하면 사용자 정의 인증 기관 번들 (http://docs.python-requests.org/en/latest/user/advanced/)을 제공 할 수 있습니다.
requests.get(url, verify=path_to_bundle)
>>> requests.get('https://kennethreitz.com', cert=('/path/server.crt', '/path/key')) <Response [200]>
-
==============================
3.가장 쉬운 방법은 개인 인증 기관이나 특정 인증서 번들을 가리키는 REQUESTS_CA_BUNDLE 변수를 내보내는 것입니다. 명령 줄에서 다음과 같이 할 수 있습니다.
가장 쉬운 방법은 개인 인증 기관이나 특정 인증서 번들을 가리키는 REQUESTS_CA_BUNDLE 변수를 내보내는 것입니다. 명령 줄에서 다음과 같이 할 수 있습니다.
export REQUESTS_CA_BUNDLE=/path/to/your/certificate.pem python script.py
인증 기관이 있고 다음과 같이 ~ / .bash_profile에 REQUESTS_CA_BUNDLE을 추가 할 때마다 내보내기를 입력하지 않으려는 경우 :
echo "export REQUESTS_CA_BUNDLE=/path/to/your/certificate.pem" >> ~/.bash_profile ; source ~/.bash_profile
-
==============================
4.여러 인증서가 필요한 경우는 다음과 같이 해결됩니다. myCert-A-Root.pem 및 myCert-B-Root.pem과 같은 여러 개의 루트 pem 파일을 파일에 연결하십시오. 그런 다음 REQUESTS_CA_BUNDLE var 요청을 ./bash_profile에있는 해당 파일에 설정하십시오.
여러 인증서가 필요한 경우는 다음과 같이 해결됩니다. myCert-A-Root.pem 및 myCert-B-Root.pem과 같은 여러 개의 루트 pem 파일을 파일에 연결하십시오. 그런 다음 REQUESTS_CA_BUNDLE var 요청을 ./bash_profile에있는 해당 파일에 설정하십시오.
$ cp myCert-A-Root.pem ca_roots.pem $ cat myCert-B-Root.pem >> ca_roots.pem $ echo "export REQUESTS_CA_BUNDLE=~/PATH_TO/CA_CHAIN/ca_roots.pem" >> ~/.bash_profile ; source ~/.bash_profile
-
==============================
5.누군가가 https2에 대한 CA (나의 경우 Charles Proxy)를 추가하고자하는 것처럼 여기에 착륙하게된다. 파이썬 패키지에 포함 된 cacerts.txt 파일에 추가 할 수있는 것처럼 보인다.
누군가가 https2에 대한 CA (나의 경우 Charles Proxy)를 추가하고자하는 것처럼 여기에 착륙하게된다. 파이썬 패키지에 포함 된 cacerts.txt 파일에 추가 할 수있는 것처럼 보인다.
예 :
cat ~/Desktop/charles-ssl-proxying-certificate.pem >> /usr/local/google-cloud-sdk/lib/third_party/httplib2/cacerts.txt
다른 솔루션에서 참조 된 환경 변수는 요청에 따라 다르며 내 테스트에서 httplib2에 의해 선택되지 않았습니다.
-
==============================
6.내보내기 설정 SSL_CERT_FILE = / path / file.crt가 작업을 수행해야합니다.
내보내기 설정 SSL_CERT_FILE = / path / file.crt가 작업을 수행해야합니다.
-
==============================
7.시도 할 수 있습니다 :
시도 할 수 있습니다 :
settings = s.merge_environment_settings(prepped.url, None, None, None, None)
자세한 내용은 다음을 참조하십시오. http://docs.python-requests.org/ko/master/user/advanced/
from https://stackoverflow.com/questions/30405867/how-to-get-python-requests-to-trust-a-self-signed-ssl-certificate by cc-by-sa and MIT license
'PYTHON' 카테고리의 다른 글
[PYTHON] 파이썬 : 객체가 시퀀스인지 확인하십시오. (0) | 2018.10.30 |
---|---|
[PYTHON] 파이썬 머리, 꼬리 및 텍스트 파일의 줄을 뒤로 읽어 (0) | 2018.10.30 |
[PYTHON] 좌표 사이의 파이썬 변환 (0) | 2018.10.30 |
[PYTHON] 파이썬에서는 두 객체가 언제 같습니까? (0) | 2018.10.30 |
[PYTHON] numpy는 행 합계로 행을 나눕니다. (0) | 2018.10.29 |