복붙노트

[PYTHON] SSL : Python3을 사용하여 CERTIFICATE_VERIFY_FAILED

PYTHON

SSL : Python3을 사용하여 CERTIFICATE_VERIFY_FAILED

바보 같은 질문이라면 사과드립니다.하지만 몇 가지 프로젝트를 만들 수 있도록 BeautifulSoup 사용법을 스스로 가르쳐 봤습니다.

튜토리얼 : https://www.youtube.com/watch?v=5GzVNi0oTxQ로이 링크를 따라갔습니다.

그와 똑같은 코드를 따른 후에, 이것은 내가 얻는 오류이다.

Traceback (most recent call last):
  File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/urllib/request.py", line 1240, in do_open
    h.request(req.get_method(), req.selector, req.data, headers)
  File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/http/client.py", line 1083, in request
    self._send_request(method, url, body, headers)
  File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/http/client.py", line 1128, in _send_request
    self.endheaders(body)
  File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/http/client.py", line 1079, in endheaders
self._send_output(message_body)
  File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/http/client.py", line 911, in _send_output
    self.send(msg)
  File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/http/client.py", line 854, in send
    self.connect()
  File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/http/client.py", line 1237, in connect
server_hostname=server_hostname)
  File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/ssl.py", line 376, in wrap_socket
_context=self)
  File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/ssl.py", line 747, in __init__
self.do_handshake()
  File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/ssl.py", line 983, in do_handshake
    self._sslobj.do_handshake()
  File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/ssl.py", line 628, in do_handshake
    self._sslobj.do_handshake()
ssl.SSLError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:645)

위의 예외를 처리하는 동안 또 다른 예외가 발생했습니다.

Traceback (most recent call last):
  File "WorldCup.py", line 3, in <module>
    x = urllib.request.urlopen('https://www.google.com')
  File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/urllib/request.py", line 162, in urlopen
    return opener.open(url, data, timeout)
  File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/urllib/request.py", line 465, in open
    response = self._open(req, data)
  File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/urllib/request.py", line 483, in _open
'_open', req)
  File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/urllib/request.py", line 443, in _call_chain
    result = func(*args)
  File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/urllib/request.py", line 1283, in https_open
    context=self._context, check_hostname=self._check_hostname)
  File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/urllib/request.py", line 1242, in do_open
raise URLError(err)
urllib.error.URLError: <urlopen error [SSL: CERTIFICATE_VERIFY_FAILED]     certificate verify failed (_ssl.c:645)>

누군가이 문제를 해결하는 방법을 알아낼 수 있습니까?

해결법

  1. ==============================

    1.파이썬이 설치된 폴더로 이동합니다. 예를 들어 제 경우에는 응용 프로그램 폴더에 'Python 3.6'이라는 폴더 이름으로 설치됩니다. 이제 'Install Certificates.command'를 두 번 클릭하십시오. 그 후에 오류가 사라졌습니다.

    파이썬이 설치된 폴더로 이동합니다. 예를 들어 제 경우에는 응용 프로그램 폴더에 'Python 3.6'이라는 폴더 이름으로 설치됩니다. 이제 'Install Certificates.command'를 두 번 클릭하십시오. 그 후에 오류가 사라졌습니다.

  2. ==============================

    2.필자의 경우 SSL 인증 모듈을 사용하여 다음과 같은 인증을 "해결"했습니다.

    필자의 경우 SSL 인증 모듈을 사용하여 다음과 같은 인증을 "해결"했습니다.

    import ssl
    
    ssl._create_default_https_context = ssl._create_unverified_context
    

    링크 내용을 읽으려면 다음을 사용할 수 있습니다.

    urllib.request.urlopen(urllink)
    
  3. from https://stackoverflow.com/questions/35569042/ssl-certificate-verify-failed-with-python3 by cc-by-sa and MIT license