검색
색인
서버 이름 표시, -標示, Server Name Indication, SNI
컴퓨터 네트워크 전송 계층 보안(TLS) 기반의 웹상에서 클라이언트가 웹 서버에 접속을 시작할 때 접속할 호스트명 정보를 같이 보내는 기능.
한 컴퓨터(즉, 한 개의 IP와 포트)에서 다수의 가상 웹 서버를 운용할 수 있도록 국제 인터넷 표준화 기구IETF(Internet Engineering Task Force)에서 만든 TLS 확장 표준이다. 2003년 6월 IETF RFC 3546 Transport Layer Security (TLS) Extension이라는 제목으로 처음 제정되었다. 해당 표준의 최신 버전은 RFC 6066(2011)이다.

기존 TLS 표준을 사용하는 HTTPS 웹 서버에서는, 하나의 IP 주소와 고정된 443 포트로 두 개 이상의 서버를 공유하기 어렵다. 그리고 IP 주소 하나에 인증서가 통합 발급되어 인증서 내 호스트명 같은 세부 정보를 수정하는 경우 다시 인증서를 재발급 받아야 하는 문제가 있다. 예를 들어, https://10.11.12.13 주소에서 이름이 다른 두 개의 웹사이트 https://shopping1.com과 https://shopping2.com을 운영할 수 없고, 각각의 웹사이트가 아닌 https://10.11.12.13 주소 하나에 인증서가 발급된다. 이와 같은 문제를 개선하기 위해 기존 TLS 표준에 확장 기능으로 SNI가 추가되었다. SNI는 TLS 핸드셰이킹 과정 초기에 클라이언트가 접속할 호스트 정보를 서버에 알려주기 때문에 동일한 IP 주소로 여러 HTTPS 웹사이트 또는 TLS상에서 돌아가는 다른 웹서비스를 운영할 수 있다. 또한 각 웹서비스별로 인증서를 발급받아 사용할 수 있어 통합 인증서 문제가 해결될 수 있다. 그러나 클라이언트와 서버 간의 보안 접속이 설정되기 전에, 즉 초기 핸드셰이킹 과정에서 암호화되지 않은 호스트명 정보가 전달되어 사용자가 어느 사이트에 접속을 요청하는지 감청될 수 있다는 문제점이 있다.
SNI를 사용하기 위해서는 서버뿐만 아니라 클라이언트인 브라우저에서도 본 SNI 기능을 지원해야 한다. 구글 크롬, MS 인터넷 익스플로러와 에지, 애플 사파리, 모질라 파이어폭스 등 대부분 브라우저가 SNI 기능을 지원하고 있다.

전송 계층 보안(TLS: Transport Layer Security): 컴퓨터 네트워크상에서 데이터의 도청이나 변조를 막기 위해 사용되는 프로토콜.