[python] M2Crypto를 사용하여 SSL/TLS 서버에서 클라이언트 측 정보 확인하는 방법은 어떻게 되나요?

M2Crypto는 Python에서 SSL 및 TLS 프로토콜을 지원하기 위한 오픈 소스 프레임워크입니다. 클라이언트 측에서 제공되는 정보를 확인하기 위해서는 SSL/TLS 핸드쉐이크 후에 클라이언트 인증서를 검증해야 합니다. 아래는 M2Crypto를 사용하여 SSL/TLS 핸드쉐이크 과정에서 클라이언트의 인증서를 확인하는 방법을 보여주는 예제 코드입니다.

from M2Crypto import SSL, X509

def verify_callback(conn, x509, errnum, depth, ok):
    if depth == 0 and ok:
        # 클라이언트의 인증서를 가져옴
        client_cert = conn.get_peer_cert()
        # 클라이언트 인증서의 정보 출력
        print("Client Certificate Subject: {}".format(client_cert.get_subject().as_text()))
        print("Client Certificate Issuer: {}".format(client_cert.get_issuer().as_text()))
        # 추가적인 인증서 검증 로직 추가 가능
    return ok

ctx = SSL.Context()
ctx.set_verify(SSL.verify_peer, 10)  # 클라이언트 측 인증 요청
ctx.set_verify_depth(10)
ctx.set_verify_callback(verify_callback)

위의 예제 코드에서는 verify_callback 함수를 정의하여 클라이언트의 인증서를 확인합니다. 핸드쉐이크 후에 클라이언트의 인증서를 가져와서 해당 인증서의 정보를 출력하고 추가적인 검증 로직을 수행할 수 있습니다.

이를 통해 M2Crypto를 사용하여 SSL/TLS 서버에서 클라이언트 측 정보를 확인할 수 있습니다.