[python] SSL 인증서 확인 방식 변경하기

SSL(Secure Sockets Layer) 인증서는 웹 사이트에서 암호화된 통신을 위해 사용되는 중요한 요소입니다. 기존에는 Python에서 SSL 인증서의 확인 방식이 기본적으로 엄격하게 설정되어 있었습니다. 하지만 때때로 개발 과정에서 또는 특정 상황에서 이 엄격한 설정을 우회해야 할 필요가 있을 수 있습니다.

이번 포스트에서는 Python에서 SSL 인증서 확인 방식을 변경하는 방법에 대해 알아보겠습니다.

문제 상황

기본적으로 Python은 SSL 인증서를 확인할 때 서버의 공개 키와 인증서 발급 기관의 신뢰도를 확인합니다. 그러나 몇 가지 상황에서는 이러한 엄격한 확인 과정이 문제를 일으킬 수 있습니다. 예를 들어, 개발 중인 로컬 서버에서 사용되는 자체 서명된 인증서를 사용하는 경우에는 기본적으로 인증서를 신뢰하지 않아 SSL 오류가 발생할 수 있습니다.

해결 방법

SSL 인증서 확인 방식을 변경하기 위해서는 ssl 모듈을 사용하여 커스텀한 인증서 확인 방식을 설정해야 합니다. 아래의 코드를 참고하여 SSL 인증서 확인 방식을 변경할 수 있습니다.

import ssl
import requests

# 인증서 확인을 비활성화
ssl_ctx = ssl.create_default_context()
ssl_ctx.check_hostname = False
ssl_ctx.verify_mode = ssl.CERT_NONE

# 변경된 SSL 인증서 확인 방식으로 요청 보내기
response = requests.get("https://example.com", verify=False, cert=ssl_ctx)

# 응답 출력
print(response.text)

위의 코드에서는 ssl 모듈의 create_default_context 함수를 사용하여 기본 설정 값을 가져온 다음, check_hostname 속성을 False로 설정하고 verify_mode 속성을 CERT_NONE으로 설정함으로써 인증서 확인을 비활성화시킵니다. 이후 requests 모듈을 사용하여 변경된 SSL 인증서 확인 방식으로 요청을 보냅니다.

주의 사항

이 방법은 개발 환경에서만 사용해야 하며, 실제 운영 환경에서는 신뢰할 수 있는 인증서를 사용해야 합니다. SSL 인증서 확인을 비활성화하는 것은 보안 위험을 초래할 수 있으므로 신중하게 사용해야 합니다.

결론

Python에서 SSL 인증서 확인 방식을 변경하는 것은 특정 상황에서 유용할 수 있습니다. 이번 포스트에서는 SSL 인증서 확인 방식을 비활성화하는 방법에 대해 알아보았습니다. 이러한 설정은 개발 환경에서만 사용하고, 실제 운영 환경에서는 신뢰할 수 있는 인증서를 사용해야 합니다.

참고 자료