전공영역 공부 기록

mTLS 프로토콜과 패킷 분석

악분 2025. 3. 1. 14:17
반응형

 

 

mTLS는 무엇일까?

mTLS는 상호(mutual)와 TLS(Transport Layer Security)가 합쳐진 개념으로, 서버와 클라이언트가 서로 신원을 확인하는 프로토콜입니다. TLS는 서버만 신원을 확인하는데 mTLS는 클라이언트와 서버 모두 신원을 확인합니다.

 

서버가 클라이언트 신원을 확인하기 때문에 서버가 허용한 클라이언트만 요청을 수락합니다.

mTLS는 언제 사용할까?

서버가 클라이언트 신원 확인이 필요할 때 사용합니다.

 

예를 들어 public으로 공개된 API를 특정 기업만 통신해야하는 상황, 즉 B2B통신할때 mTLS를 사용합니다. 우리나라 사용 사례는 금융권 마이데이터에서 사용하는 것 같습니다. 저는 B2B통신을 위해 mTLS를 공부하게되었습니다.

 

mTLS 분석

mTLS는 TLS프로토콜에서 클라이언트 신원 확인 단계가 추가됩니다. 클라이언트가 서버에게 인증서를 전송하고 서버는 받은 인증서를 검증합니다. 클라이언트가 서버에게 전송하는 인증서를 클라이언트 인증서라고 합니다.

 

클라이언트 인증서 검증이 실패하면 서버는 요청을 거절하는 응답을 전송합니다. 거절응답은 서버마다 다릅니다. 예를 들어 403 Forbidden응답을 줄 수 있고, 5xx 응답을 줄수도 있습니다.

 

패킷 분석

mTLS 패킷은 저의 github에 공개되어 있습니다. nginx에 mTLS설정을 하고 패킷캡처를 했습니다.

 

mTLS는 TCP핸드쉐이킹 + TLS핸드쉐이킹 + 클라이언트 신원 확인단계가 있습니다. TCP 핸드쉐이킹 이후에 TLS핸드쉐이킹이 시작됩니다.

 

TLS핸드쉐이킹 시작부분은 TLS파라미터 협상과 서버신원확인과정입니다. 서버는 서버인증서를 클라이언트에 전송합니다.

클라이언트는 받은 서버인증서를 검증합니다. 검증이 성공하면 클라이언트 인증서를 서버에 전달합니다. 서버는 받은 클라이언트 인증서를 검증하고 검증이 끝나면 암호화 통신을 시작합니다.

 

실습자료

실습과정은 저의 유투브에 자세히 다룹니다. 실습자료는 저의 github에 있습니다.

 

참고자료

반응형