728x90
반응형
쉽게 말해 파이썬 버전이 바뀌면서 생기는 문제이다.
파이썬 3.7부터 ssl.wrap_socket() 함수는 deprecated가 되었으며
ssl.SSLContext object 를 만들고 ssl.SSLContext.wrap_socket 함수를 호출하는 것이 권고되었다.
아직 ssl.wrap_socket() 함수를 쓰고 있다면 이는 보안에 취약하고 해당 함수는 서버의 호스트네임을 검증하지 않는다고 한다. CWE-295: Improper Certificate Validation에 위배되기 때문에 바꿔줘야 한다.
그럼 원래 어떻게 되어있었고 어떻게 바꿔야 하나?
runsslserver.py 를 열고 (보통 에러메세지에 어느 파일에서 에러가 발생했는지 나오기 때문에 클릭하면 들어가진다)
대충 아래처럼 되어있던 코드
class SecureHTTPServer(ThreadedWSGIServer):
def __init__(self, address, handler_cls, certificate, key, ipv6=False):
super(SecureHTTPServer, self).__init__(address, handler_cls, ipv6=ipv6)
self.socket = ssl.wrap_socket(self.socket, certfile=certificate,
keyfile=key, server_side=True,
ssl_version=_ssl_version,
cert_reqs=ssl.CERT_NONE)
아래 처럼 바꿔주면 된다.
class SecureHTTPServer(ThreadedWSGIServer):
def __init__(self, address, handler_cls, certificate, key, ipv6=False):
super(SecureHTTPServer, self).__init__(address, handler_cls, ipv6=ipv6)
context = ssl.SSLContext(ssl.PROTOCOL_TLS_SERVER)
context.load_cert_chain(certfile=certificate, keyfile=key)
self.socket = context.wrap_socket(self.socket, server_side=True)
그리고 ssl을 실행하게 되면? 실행이 되는 마법을 볼 수 있다.
위 내용은 깃헙 커뮤니티에서 참고한 내용이다.
원문을 보고 싶다면 아래로 들어가면 된다. (다 영어이긴 하지만)
728x90
반응형
'개발자 전향 프로젝트' 카테고리의 다른 글
로컬에 설치한 DB와 도커에 띄워진 APP 연결하기 (Postgres) (0) | 2024.06.24 |
---|---|
Django 와 React 동시에 실행하기: Concurrently 라이브러리 (0) | 2024.06.13 |
pip install 중에 발생하는 코덱 에러 : UnicodeDecodeError 'cp949' codec (0) | 2024.05.28 |
[QueryDSL] Hexadecimal to Decimal Conversion (데이터 포맷 변환) (0) | 2024.05.21 |
QueryDSL 다른 조건으로 같은 테이블 여러번 조인하기 (0) | 2024.04.05 |