mTLS 이해도→구현 과정 세부 내용→보안 문제 해결→성공 사례 순 전개
mTLS는 서버뿐 아니라 클라이언트도 인증서를 제시해 양방향 신원 확인을 하는 방식입니다. 일반 TLS가 서버 신원만 검증하는 것과 달리, 서비스 간 통신에서 '이 요청이 정말 인가된 서비스에서 온 것인가'를 확인할 수 있어서 내부 마이크로서비스 환경에서 자주 씁니다. 사이드 프로젝트에서 두 서비스 간 통신에 mTLS를 적용해본 경험이 있습니다. 각 서비스에 대해 CA 인증서로 서명된 클라이언트/서버 인증서를 발급하고, Go 표준 라이브러리의 tls.Config에 ClientAuth: tls.RequireAndVerifyClientCert를 설정해 적용했습니다.
인증서 경로 설정이나 CA 체인 구성에서 오류가 나면 handshake 실패가 조용히 일어나는 게 디버깅하기 까다로웠습니다. 그 이후로는 인증서 만료 날짜와 체인 구조를 openssl verify 명령으로 먼저 확인하는 습관이 생겼습니다. 적용 후 서비스 간 통신에서 인증 없이 온 요청이 자동으로 거부되는 구조가 만들어졌고, 수동 IP 허용 목록 관리가 필요 없어진 것이 실질적인 개선이었습니다.