TLS와 인증서
인증서로 Server 신원을 검증하고 Handshake에서 암호화 Session을 합의한다.
이 문서의 목차
Overview
TLS는 Server 신원 확인, 전송 암호화, 위변조 탐지를 제공한다. 인증서는 Server의 공개키와 Domain을 CA가 서명한 신분증이고 Private Key는 Server만 보관한다.
sequenceDiagram; participant C as Client; participant S as Server; C->>S: 지원 버전·암호군·Key Share; S-->>C: 선택값·인증서·Key Share; C->>C: SAN·기간·CA Chain 검증; C->>S: Finished; S-->>C: Finished; C<<->>S: 대칭키 암호화 HTTP
인증서 검증
SAN에 실제 Domain이 있는지, 유효기간, Root까지 이어지는 Intermediate Chain, Certificate와 Private Key의 짝, 허용 TLS Version을 확인한다. 현대 TLS는 비대칭 암호로 모든 HTTP Body를 암호화하지 않고 Handshake 뒤 효율적인 대칭키를 사용한다.
운영 고려사항
TLS Termination이 CDN, Load Balancer, Proxy, Application 중 어디인지 알아야 한다. 인증서 자동 갱신과 만료 Alert를 두고 KeyStore Password와 Private Key를 Git에 저장하지 않는다. Proxy 뒤 Application은 신뢰할 수 있는 Forwarded Header 경계도 정한다.
흔한 오해
관습적으로 SSL 인증서라 부르지만 현재 Protocol은 TLS다. HTTPS라고 Application 자체가 안전해지는 것은 아니며 인증·인가·입력 검증은 별도다.
Interview Questions
- 인증서와 Private Key의 역할은?
- CA Trust Chain은 왜 필요한가?
- 비대칭키와 대칭키를 함께 쓰는 이유는?
- TLS Termination 위치가 운영에 미치는 영향은?
Related Topics
인증과 Token에서 TLS 위의 사용자 신원 확인을 이어서 본다.
SOURCE REFERENCES
이 문서의 근거
본문은 Dev Atlas 안에서 완결되며, 검증이 필요할 때만 원문을 확인할 수 있습니다.