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를 바꿔도 사용자 인증서는 달라지지 않는다.