[python] 파이썬에서 PyOpenSSL을 사용하여 클라이언트와 서버 간의 SSL 통신을 설정하는 방법은 무엇인가요?
PyOpenSSL을 사용하여 파이썬에서 클라이언트와 서버 간의 SSL 통신을 설정하는 방법을 알아보겠습니다.
- PyOpenSSL 설치하기
pip install pyopenssl
- 클라이언트 설정
import socket from OpenSSL import SSL # SSL 컨텍스트 생성 context = SSL.Context(SSL.TLSv1_2_METHOD) # 클라이언트 소켓 생성 client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) # SSL 컨텍스트를 클라이언트 소켓과 연결 ssl_client = SSL.Connection(context, client_socket) # 서버 주소 및 포트 설정 server_address = ('서버주소', 443) # 서버와 SSL 핸드셰이크 수행 ssl_client.connect(server_address) # 데이터 전송 ssl_client.send(b'Hello, server!') # 서버로부터 응답 받기 response = ssl_client.recv(4096) # SSL 연결 종료 ssl_client.close()
- 서버 설정
import socket from OpenSSL import SSL # SSL 컨텍스트 생성 context = SSL.Context(SSL.TLSv1_2_METHOD) # 서버 소켓 생성 server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) # 서버 소켓 바인딩 server_socket.bind(('0.0.0.0', 443)) # 서버 소켓 리스닝 server_socket.listen(5) while True: # 클라이언트 연결 수락 client_socket, address = server_socket.accept() # 클라이언트와 SSL 핸드셰이크 수행 ssl_server = SSL.Connection(context, client_socket) ssl_server.set_accept_state() # 클라이언트로부터 데이터 받기 data = ssl_server.recv(4096) # 받은 데이터를 대문자로 변환하여 클라이언트에게 다시 전송 response = data.upper() ssl_server.send(response) # SSL 연결 종료 ssl_server.close()
위의 예제 코드는 클라이언트와 서버 간의 기본 SSL 통신을 구성하는 방법을 보여줍니다.
PyOpenSSL을 사용하면 보안성 있는 통신을 구현할 수 있습니다. 자세한 내용은 PyOpenSSL 공식 문서를 참고해주시기 바랍니다.
참고 자료: