일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 코딩
- 빅데이터
- 보안
- 컴퓨터과학
- 딥러닝
- 데이터분석
- 프로그래밍
- 자바스크립트
- 데이터과학
- 컴퓨터공학
- 알고리즘
- 데이터베이스
- 데이터구조
- 컴퓨터비전
- 웹개발
- 머신러닝
- 버전관리
- 프로그래밍언어
- 클라우드컴퓨팅
- 사이버보안
- 파이썬
- 인공지능
- 소프트웨어공학
- Yes
- 네트워크보안
- 소프트웨어
- I'm Sorry
- 네트워크
- 자료구조
- 2
- Today
- Total
스택큐힙리스트
urllib와 "SSL: CERTIFICATE_VERIFY_FAILED" 오류 본문
다음 오류가 발생 중입니다.
Exception in thread Thread-3:
Traceback (most recent call last):
File /Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/threading.py, line 810, in __bootstrap_inner
self.run()
File /Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/threading.py, line 763, in run
self.__target(*self.__args, **self.__kwargs)
File /Users/Matthew/Desktop/Skypebot 2.0/bot.py, line 271, in process
info = urllib2.urlopen(req).read()
File /Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/urllib2.py, line 154, in urlopen
return opener.open(url, data, timeout)
File /Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/urllib2.py, line 431, in open
response = self._open(req, data)
File /Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/urllib2.py, line 449, in _open
'_open', req)
File /Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/urllib2.py, line 409, in _call_chain
result = func(*args)
File /Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/urllib2.py, line 1240, in https_open
context=self._context)
File /Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/urllib2.py, line 1197, in do_open
raise URLError(err)
URLError:
이것은 이 오류를 일으키는 코드입니다:
if input.startswith(!web):
input = input.replace(!web , )
url = https://domainsearch.p.mashape.com/index.php?name= + input
req = urllib2.Request(url, headers={ 'X-Mashape-Key': 'XXXXXXXXXXXXXXXXXXXX' })
info = urllib2.urlopen(req).read()
Message.Chat.SendMessage ( + info)
사용하는 API는 HTTPS를 사용하도록 요청합니다. 인증 우회를 어떻게 할 수 있나요?
답변 1
이것은 당신의 구체적인 문제에 대한 해결책은 아니지만, SSL: CERTIFICATE_VERIFY_FAILED에 대한 검색 결과로 이 글을 최상단으로 표시하기 때문에 여기에 올립니다. 저는 이에 대해 수많은 번의 검색을 했었습니다.
만약 OSX에 Python 3.6을 설치하고 https:// 사이트에 연결하려고 할 때 SSL: CERTIFICATE_VERIFY_FAILED 오류가 발생하면, Python 3.6 OSX에서는 인증서가 전혀 없기 때문에 SSL 연결을 확인할 수 없을 수 있다. 이것은 OSX의 3.6에서의 변경 사항이며 포스트-설치 단계가 필요하며, 이러한 certifi 인증서 패키지를 설치해야한다. 이것은 ReadMe.rtf 파일에 문서화되어 있으며, 이 파일은 /Applications/Python\ 3.6/ReadMe.rtf에서 찾을 수 있다 (또한 macOS 설치 프로그램을 생성하는 스크립트 build-installer.py과 함께 파일 Conclusion.rtf도 참조).
ReadMe에서는 설치 후 스크립트를 실행하도록 안내할 것입니다.
/Applications/Python\ 3.10/Install\ Certificates.command (터미널 앱에서 이 명령어 하나만으로 문제가 해결됩니다. 현재 서브버전을 사용하여 파일 경로를 업데이트해야합니다.)
(그것의 소스는 install_certificates.command)은 다음과 같습니다:
첫째 installs the Python package certifi , 그리고
그러면 OpenSSL 인증서 파일에서 패키지 certifi에 설치된 인증서 파일로 변경합니다.
릴리스 노트에는 더 많은 정보가 있습니다: https://www.python.org/downloads/release/python-360/
최신 버전의 Python에서는 이에 대한 더 많은 문서가 있습니다:
https://github.com/python/cpython/blob/e05a703848473b0365886dcc593cbddc46609f29/Mac/BuildScript/resources/ReadMe.rtf#L22-L34
https://github.com/python/cpython/blob/e05a703848473b0365886dcc593cbddc46609f29/Mac/BuildScript/resources/Conclusion.rtf#L15-L19
https://github.com/python/cpython/blob/e05a703848473b0365886dcc593cbddc46609f29/Mac/BuildScript/resources/Welcome.rtf#L23-L25
https://github.com/python/cpython/blob/e05a703848473b0365886dcc593cbddc46609f29/Mac/BuildScript/resources/install_certificates.command
https://github.com/python/cpython/blob/e05a703848473b0365886dcc593cbddc46609f29/Mac/BuildScript/README.rst
https://github.com/python/cpython/blob/e05a703848473b0365886dcc593cbddc46609f29/Mac/BuildScript/build-installer.py#L239-L246
답변 2
urllib 및 'SSL: CERTIFICATE_VERIFY_FAILED' 오류Python의 urllib 모듈은 URL과 상호 작용하는 기능을 제공합니다. 그러나 SSL (Secure Sockets Layer) 인증서 확인이 실패하면 SSL: CERTIFICATE_VERIFY_FAILED 오류가 발생할 수 있습니다. 이는 일반적으로 HTTPS 프로토콜을 사용하는 서버와 상호 작용할 때 발생합니다.
이 오류는 인증서 관리를 위해 인증 기관 (CA)에서 발급 한 인증서가 신뢰할 수없는 것으로 나타났거나, 서버와 클라이언트 간의 네트워크 연결에 문제가 있는 경우 발생할 수 있습니다. 이러한 경우, 클라이언트는 서버와 통신하는 경우 SSL 인증서가 유효한지 확인하려고 시도합니다. 그러나 SSL 인증서가 유효하지 않으면 SSL: CERTIFICATE_VERIFY_FAILED 오류가 발생하며, 클라이언트는 서버와 통신 할 수 없게 됩니다.
이 문제를 해결하려면, 먼저 서버의 SSL 인증서가 유효한지 확인해야 합니다. 그리고 그 인증서를 신뢰할 수 있는 CA가 발급했는지 확인해야 합니다. 그런 다음 파이썬 인증서 저장소에서 해당 CA의 루트 인증서를 다운로드하여 설치해야 합니다. 이렇게 하면 urllib 모듈을 사용하여 SSL 연결에 성공할 수 있습니다.
결론적으로, SSL: CERTIFICATE_VERIFY_FAILED 오류는 HTTPS 프로토콜을 사용하는 서버와 상호 작용할 때 발생할 수 있는 일반적인 문제입니다. 해당 인증서가 유효하고, 발급한 CA가 신뢰할 수 있는지 확인하고 루트 인증서를 설치하여 문제를 해결할 수 있습니다. 이를 위해 urllib 모듈을 적절하게 사용하는 것이 중요합니다.