Python HTTPS 연결시 TLS 1.0 사용
개발개발/기타 / 2019.01.02 04:08
TLS 1.0 은 이제 보안 정책으로 사용이 금지되어 있다.
그래서 기술적으로는 구현이 되어있음에도 불구하고, 브라우저나 각종 라이브러리로 사용을 하려고 하면 오류가 난다.
크롬 기준 이러한 사이트에 접속하려고 하면
The connection to this site uses
TLS 1.0 (an obsolete protocol),
RSA (an obsolete key exchange),
3DES_EDE_CBC with HMAC-SHA1 (an obsolete cipher).
이런 메시지를 내면서 접속을 불허한다.
이런 사이트에 대해 Python 을 사용하여 요청을 보낼때 이를 굳이 우회하는 방법.
나의 경우 requests 라이브러리를 사용했는데, urllib3 라이브러리를 사용한다면 동일하다.
urllib3.util.ssl_.DEFAULT_CIPHERS 에 'DES-CBC3-SHA' 을 추가해주면 됨.
콜론으로 구분되기 때문에
urllib3.util.ssl_.DEFAULT_CIPHERS += ':DES-CBC3-SHA'
이렇게 작성해주면 된다.
(DES-CBC3-SHA 과 3DES_EDE_CBC 은 명명법만 다르지 같다고 한다.)
requests 라이브러리를 쓴다면
requests.packages.urllib3 로 임포트 되어 있으니 여기다 해줘도 됨(혹은 여기다가 해줘야만 할 수도?)
requests.packages.urllib3.util.ssl_.DEFAULT_CIPHERS += ':DES-CBC3-SHA'
Trivial
requests 기준으로 인증서 오류도 날테니 요청을 보낼때 verify=False 인자도 추가해주자.
그리고 이러면 또 warning 이 매번 출력되는데, 아래와 같은 방법으로 비활성화 할 수 있다.
똑같은 코드지만, 상황에 맞게 복붙해서 사용하자.
# urllib3
urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)
# requests
requests.packages.urllib3.disable_warnings(requests.packages.urllib3.exceptions.InsecureRequestWarning)
참고
'개발개발 > 기타' 카테고리의 다른 글
Python HTTPS 연결시 TLS 1.0 사용 (0) | 2019.01.02 |
---|---|
Excel 에서 정상적으로 읽히는 UTF-8 CSV 파일 만들기 (UTF-8 BOM) (0) | 2017.07.19 |
Python euc-kr 인코딩 변환 및 길이 계산하기 (0) | 2016.04.03 |
[Mac / Ubuntu] Go (golang) 설치하기 (0) | 2015.12.22 |
winapi gdi+ image load and convert to HBITMAP (0) | 2015.11.02 |
Surrounded 스킨 깨짐 해결 (0) | 2015.06.07 |