나는 + HTTPS 요청을 사용하는 Python 미니 응용 프로그램을 유지 관리하고 있습니다. Python 요청 "인증서 확인 실패"
응용
는 (합법적으로) 변경 한 HTTPS URL에 호스트의 IP 주소까지했다. 브라우저에서 URL을 가리키면 괜찮습니다. 는 어디 파이썬/요청은 SSH의에서 known_hosts의 아날로그를 유지 않으며, 어떻게 내가이 호스트를 삭제합니까?$ python --version
Python 2.7.3
$ cat foo.py
import requests
url = "https://somehost/resource.json"
requests.get(url, timeout=5, config={'danger_mode': True})
$ source venv/bin/activate
$ python foo.py
Traceback (most recent call last):
File "foo.py", line 3, in <module>
requests.get(url, timeout=5, config={'danger_mode': True})
File "/home/dfukdev/corsair-scripts/alfred/venv/local/lib/python2.7/site-packages/requests/api.py", line 65, in get
return request('get', url, **kwargs)
File "/home/dfukdev/corsair-scripts/alfred/venv/local/lib/python2.7/site-packages/requests/safe_mode.py", line 39, in wrapped
return function(method, url, **kwargs)
File "/home/dfukdev/corsair-scripts/alfred/venv/local/lib/python2.7/site-packages/requests/api.py", line 51, in request
return session.request(method=method, url=url, **kwargs)
File "/home/dfukdev/corsair-scripts/alfred/venv/local/lib/python2.7/site-packages/requests/sessions.py", line 241, in request
r.send(prefetch=prefetch)
File "/home/dfukdev/corsair-scripts/alfred/venv/local/lib/python2.7/site-packages/requests/models.py", line 641, in send
raise SSLError(e)
requests.exceptions.SSLError: [Errno 1] _ssl.c:504: error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed
인증서가 유효하지 않은 이유가 확실하지 않지만 해결 방법으로'requests.get (url, timeout = 5, config = { 'danger_mode': True), verify = False)' [Requests advanced usage documentation] (http://www.python-requests.org/en/latest/user/advanced/)에 언급 된대로 SSL 인증서를 무시하십시오. –
@ AndréDaniel에는'config'가 제거 되었습니까? 나는 링크 된 페이지에서 그것을 볼 수 없다. 그리고 나의 파이썬은 그것이 알려지지 않았다고 주장한다. 그리고'verify = False'만으로도 트릭을하지 않는 것 같습니다 ... – codeling
@RandolphCarter 방금 페이지를 보았습니다. 여전히 "SSL Cert"를 검색합니다 (직접 링크를 제공하고 싶지만 나는 내 전화에있어 정말 그렇게 할 수 없다) ... –