728x90
반응형

SNI(Server Name Indication)란 서버명 지정이라는 뜻이다.

TLS 프로토콜 확장형이고 네트워크을 통하여 TCP 통신을 수행할 시에 SSL/TLS Handshake 과정을 거치는데 이때 Handshake 과정의 시작점에서 웹브라우저에게 호스트명(HTTP Header에 삽입)을 정해준다.

이 방식을 통하여 동일 서버에서 여러개의 SSL 통신이 가능하게 된다. (이 말은 곧 여러 웹 사이트의 SSL 통신이 하나의 443 포트로 가능해진다는 얘기이다.)

몇몇 브라우저 및 기기의 접속 제한이 있지만 이를 무시할 수 있을 경우 하나의 서버에서 여러 사이트의 SSL(HTTPS)를 단일 443 포트로 연결할 수 있다.

 

작동 방식

 

 

작동 방식은 아래와 같다.

  1. 웹 서버에 브라우저가 HTTPS 접속할시에 SSL/TLS 접속을 하게 되며 브라우저는 피싱사이트가 아닌 진짜 싸이트에 접속된것인지 여부를 알 수 있도록 서버에서 SSL 인증서를 가져오게 된다.

  2. 브라우저는 가져온 인증서를 가지고 접속하고자하는 도메인 주소와 인증서의 이름을 비교하게 되며 만일 이름이 일치하면 보안접속이 이루어지게 된다. (아닐 경우 경고 메시지를 불러온다.)

  3. 보통 하나의 서버에 여러개의 도메인을 서비스(상황에 따라 다름)하므로 IP만 가지고 이를 판단하게 되면 서버상의 하나의 도메인만 SSL 통신이 가능하게 되므로 SNI를 사용한다.

    (즉, 하나의 서버상에 여러 도메인을 서비스하는 경우 SNI가 있다면 SSL 통신이 가능해진다.)

 

 

모든 서버나 클라이언트가 다 지원을 하는 것이 아니고 구형 브라우저나 서버 프로그램은 지원하지 않는다.

SNI 필드에 대한 암호화는 TLS 1.3부터 지원한다.

 

 

참고

https://sarc.io/index.php/miscellaneous/1593-sni-server-name-indication

https://blog.naver.com/ncloud24/221255979858

https://brunch.co.kr/@sokoban/22

 

반응형

'Web' 카테고리의 다른 글

HAProxy & Keepalived  (1) 2020.01.29
HAProxy  (2) 2020.01.17
Keepalived & VRRP  (0) 2020.01.17
부하분산 테스트 설명 및 용어  (0) 2019.04.09
PinPoint  (0) 2019.04.09

+ Recent posts