본문 바로가기
프로그래밍/파이썬

python urllib error [SSL: CERTIFICATE_VERIFY_FAILED]

by laoching 2022. 2. 5.
728x90
반응형

[책: 파이썬으로 웹 크롤러 만들기]에 나오는 예제 중 맨 처음에 나오는 예제다.

해당 소스코드를 그대로 따라 치면 아래와 같은 [SSL: CERTIFICATE_VERIFY_FAILED] 에러가 발생한다.

이 에러는 아래의 내용을 추가해주면 손쉽게 해결된다.

import ssl
ssl._create_default_https_context = ssl._create_unverified_context

 

하지만 그냥 네이버 주소를 입력했을때는 위와 같은 오류가 발생하지 않았었는데,

이는 예제 사이트에 문제가 있다고 생각할 수 밖에 없는 이유이다.

내 추측으로는 사이트에 SSL 인증서가 추가되지 않은 상태인 것 같다.

 

Python Enhancement Proposal의 약어인 PEP 476을 보면

[standard library http client (the urlliburllib2http, and httplibmodules)] 을 사용할 때 호스트의 X509 인증서를 확인하도록 변경되었다고 한다.

 

그 이유는 보안 때문이다.

The failure to do these checks means that anyone with a privileged network position is able to trivially execute a man in the middle attack against a Python application using either of these HTTP clients, and change traffic at will.

위에서 언급한 http client를 사용해 MITM 공격이 가능하기 때문이라고 설명되어 있다.

 

PEP 476 -- Enabling certificate verification by default for stdlib http clients | Python.org

 

PEP 476 -- Enabling certificate verification by default for stdlib http clients

The official home of the Python Programming Language

www.python.org

 

728x90
반응형

'프로그래밍 > 파이썬' 카테고리의 다른 글

PEP(Python Enhancement Proposals)  (0) 2022.02.13
파이썬 이스케이프 시퀀스  (0) 2022.02.09
파이썬 연산자 우선순위  (0) 2022.02.09
__main__이란?  (0) 2022.02.06
보안뉴스 1페이지 기사제목 크롤링  (0) 2022.02.03

댓글