Mutual TLS

mTLS는 서버와 클라이언트가 서로 인증서를 검증한다

일반 웹 TLS가 주로 서버 신원을 확인한다면, mTLS는 클라이언트 인증서까지 요구해 서비스와 서비스 사이의 신원을 강하게 묶는다.

서버 인증서와 클라이언트 인증서를 각각 신뢰할 CA가 필요하다.
TLS 계층에서 신원을 확인하지만 권한 부여는 별도 정책이다.
발급, 폐기, 회전, 키 보호가 운영 난이도를 결정한다.
A

Client / Service A

client.crt + client.key 보유

1. ClientHello

지원 버전, cipher suite, SNI를 보낸다.

2. Server Certificate + CertificateRequest

서버 인증서와 함께 클라이언트 인증서를 요청한다.

3. Client Certificate + CertificateVerify

클라이언트가 자신의 인증서와 개인키 소유 증명을 보낸다.

4. Trust + Policy

CA 체인으로 신원을 검증하고, 서비스 권한은 정책에서 판정한다.

B

Server / Service B

server.crt + trusted client CA 보유

Identity CN, SAN, SPIFFE ID처럼 주체를 식별
Trust Anchor 공개 CA 또는 조직 내부 CA를 신뢰
Rotation 짧은 수명과 자동 재발급으로 키 위험 축소
Authorization 인증된 주체가 할 수 있는 일은 별도 결정
실무 포인트 mTLS는 “누구인지”를 강하게 확인한다. “무엇을 할 수 있는지”는 API 게이트웨이, 서비스 메시, 애플리케이션 정책과 함께 설계해야 한다.