스택큐힙리스트

urllib와 "SSL: CERTIFICATE_VERIFY_FAILED" 오류 본문

카테고리 없음

urllib와 "SSL: CERTIFICATE_VERIFY_FAILED" 오류

스택큐힙리스트 2023. 4. 2. 10:23
반응형

다음 오류가 발생 중입니다.

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 모듈을 적절하게 사용하는 것이 중요합니다.

반응형
Comments