[Python] SSL: CERTIFICATE_VERIFY_FAILED, 조치방법 5가지
파이썬에서는 일반적으로 urllib, requests, httpslib 등의 모듈을 사용하여 웹 서버와 통신하게 됩니다. 이러한 모듈을 사용하여 SSL/TLS 보안 연결을 설정할 때 신뢰할 수 있는 인증서를 사용해야 합니다.
일반적으로 집이나 보안이 강한 곳이 아닌 경우 문제가 되지 않지만, 회사와 같은 강력한 보안이 되어 있는 네트워크에서 접근 할 경우 SSL 에러가 발생할 수 있습니다. 이를 해결하기 위해서는 5가지 방법이 존재하는데 알아보도록 하겠습니다.
인증서 업데이트
우선 가장 기본적인 해결책으로 SSL 인증서를 업데이트 하는 것입니다. 이미 인증서를 가지고 있지만 만료되었거나 유효하지 않을 경우 SSL 에러가 발생할 수 있는데 이럴 경우 인증서를 업데이트 하는 것으로 문제를 해결할 수 있습니다.
인증서 설치
인증서가 아예 없을 경우도 이와 같은 문제가 발생할 수 있습니다. 이를 경우 루트 인증서를 다운로드하고 설치하여서 문제를 해결할 수 있습니다.
URL 변경
https로 되어 있는 URL을 http로 변경하여 처리를 할 수 있습니다. 다만 모두가 되는 것은 아니니 테스트를 해보셔야 될 겁니다.
인증서 검증 비활성화
보안적인 위험이 있지만, SSL 인증서 검증을 비활성화 하여 연결을 할 수 있습니다.[1]
import ssl
ssl._create_default_https_context = ssl._create_unverified_context
Request Verify 비활성화
이 방식은 위 ssl 처리 방식과 비슷하지만, 인증서에서 비활성화하는 것이 아닌 request에서 비활성화 시키는 방식입니다.
import requests
response = requests.get(url, verify=False)
requests.get 뿐만 아니라 requests.post 역시 마찬가지로, verify=False로 설정해주면 됩니다.
참고자료
[1] urllib and "SSL: CERTIFICATE_VERIFY_FAILED" Error, https://stackoverflow.com/questions/27835619/urllib-and-ssl-certificate-verify-failed-error