1. SNI란
- 동일한 IP address로 여러 웹 사이트가 존재할 수 있도록 허용하는 TLS 프로토콜 확장임.
- HTTP 헤더를 SSL/TLS Handshake에 삽입함. 이에 따라 동일 서버에서 여러 SSL/TLS 통신이 가능해짐. (이 말은 곧 여러 웹 사이트의 SSL 통신이 하나의 443 포트로 가능)
2. 작동 방식
- HTTPS 접속을 시도하면 브라우저는 사이트가 진짜 사이트가 맞는지 확인하기 위해 서버에서 인증서를 가져온다.
- 브라우저는 이 인증서의 이름과 접속하려고 했던 도메인 주소를 비교. 일치하면 접속이 이루어지게 된다. 일치하지 않으면 경고가 뜬다.
3. 장점
한 서버에 여러 인증서 적용할 때 더 이상 인증서별로 포트를 분리하지 않아도 된다!
4. 제약사항
- 모든 서버나 클라이언트가 다 지원하는 것은 아니다. 구형 브라우저, 오래된 서버 프로그램은 안된다.
- SNI 필드에 대한 암호화는 TLS 1.3부터 지원 (https://tools.ietf.org/html/draft-rescorla-tls-esni-00)