파이썬 SSL: CERTIFICATE_VERIFY_FAILED 오류 내용과 해결 방법

파이썬-SSL-에러
파이썬-SSL-에러

파이썬에서 HTTPS 요청을 보낼 때 SSL 인증서 검증이 실패했다고 오류가 날 수 있습니다. 이 문제는 주로 Python의 urllib 또는 requests 라이브러리를 사용하여 웹 리소스에 접근할 때 발생합니다. 필자도 아래와 같이 SSL 인증서 오류가 발생했습니다.

<urlopen error [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:1108)>

 이 오류는 SSL 인증서를 검증하는 과정에서 로컬 시스템이 신뢰할 수 있는 인증서 발급 기관(CA) 인증서를 찾지 못할 때 발생합니다.

이 포스팅에서는 파이썬 ‘SSL: CERTIFICATE_VERIFY_FAILED’ 오류 내용과 해결 방법을 알아보았습니다.


SSL 인증서란?

SSL(Secure Sockets Layer) 인증서는 인터넷 상에서 데이터 통신의 보안을 유지하기 위해 사용합니다. SSL 인증서는 아래와 같은 역할을 합니다.

1) 데이터 암호화

SSL 인증서는 서버와 클라이언트 간에 주고받는 데이터를 암호화합니다. 이를 통해 중간에 누군가가 데이터를 가로채더라도 내용을 해독할 수 없도록 합니다. 암호화된 통신을 통해 민감한 정보(예: 로그인 정보 등)가 안전하게 전송됩니다.

2) 서버 인증

SSL 인증서는 클라이언트(예: 웹 브라우저)가 통신하려는 서버가 실제로 신뢰할 수 있는 서버임을 확인하는 데 사용됩니다. 이는 피싱 사이트나 악성 사이트로의 연결을 방지하는 데 중요한 역할을 합니다.

인증서는 인증 기관(Certificate Authority, CA)에 의해 발급되며, 이 기관은 서버의 신원을 확인하고 신뢰할 수 있음을 보증합니다.

3) 데이터 무결성 보장

SSL 인증서는 데이터가 전송되는 동안 변조되지 않았음을 보장합니다. 이는 데이터가 전송 중에 손상되거나 변경되지 않았다는 것을 확인하는 데 도움을 줍니다.

4) 신뢰성 증대

SSL 인증서를 통해 웹사이트는 신뢰할 수 있는 사이트임을 사용자에게 알릴 수 있습니다. 예를 들어, 웹 브라우저는 SSL 인증서를 사용하여 연결이 안전함을 보여주기 위해 주소창에 자물쇠 아이콘을 표시합니다.

결론적으로, SSL 인증서는 인터넷에서의 안전한 통신을 가능하게 하는 중요한 요소로, 데이터의 암호화, 서버의 신원 인증, 데이터의 무결성을 보장하는 역할을 합니다. 이를 통해 사용자와 서버 간의 신뢰를 구축하고 민감한 정보를 보호합니다.


해결 방법

검색하면 여러가지 해결 방법이 나옵니다. 그 중에는 인증서를 설치하는 방법도 있는데, 잘 되지 않습니다.

굳이 보안이 필요하지 않은 데이터라면 SSL 인증서 검증을 생략하는 편이 편하고 쉽습니다. 방법은 파이썬에서 HTTPS 요청을 보내기 전에, 아래 코드를 실행하면 됩니다.

import ssl
ssl._create_default_https_context = ssl._create_unverified_context

하지만 보안상 권장되는 방법은 아니라고 하네요. 보안까지 고려하면 SSL 인증서를 설치하는 방법을 이용해보시기 바랍니다.

Leave a Comment