WEBBOOK CHAPTER

WAR 배포, 밤에 깨지 않게: 13장 TLS 종료 지점을 먼저 찾는다

13장 TLS 종료 지점을 먼저 찾는다

브라우저가 받은 인증서를 교체하려면 실제 TLS handshake를 처리하는 곳을 찾아야 한다. 흔한 구조는 네 가지다.

구조 인증서가 있는 곳 reload 대상
Nginx → Tomcat HTTP Nginx Nginx
Load Balancer → Nginx/Tomcat HTTP LB 또는 CDN 해당 관리 plane
Nginx → Tomcat HTTPS 양쪽 모두 각각의 인증서 목적 확인
Tomcat 단독 HTTPS Tomcat keystore/PEM Tomcat TLS 설정

서버에서 파일 검색부터 하지 않는다. DNS, load balancer listener, Nginx listen 443 ssl, Tomcat Connector를 따라 요청 경로를 그린다. 외부에서 받은 인증서 issuer와 serial을 확인한다.


openssl s_client -connect portal.example.com:443 
  -servername portal.example.com </dev/null 2>/dev/null 
  | openssl x509 -noout -subject -issuer -serial -dates

-servername은 SNI를 보낸다. 한 IP에서 여러 hostname을 서비스할 때 이를 빼면 기본 virtual host의 다른 인증서를 볼 수 있다. 로드밸런서에서 TLS를 종료한다면 Tomcat의 keystore를 바꿔도 사용자 인증서는 달라지지 않는다.