서버네임 인디케이터 SNI 차단 방식

SNI(server name indicate)

 

SN은 CN 과 비슷한데 sni는 와이어샤크 등으로 패킷 뜨면 server name 부분에 나옵니다.
cn과 겹칠때가 간혹 있습니다.
보통 개발자 분들이 말할 때 cn 에 sni를 포함시켜 따로 분류하시지 않습니다.

sni

SNI는 TLS/SSL 프로토콜의 확장 표준입니다.
클라이언트가 처음 접속할때 어떤 Host로 접근하는지 그 이름을 서버한테 보내는 기능이고
컴퓨터 네트워크 프로토콜인 TLS의 확장으로, 핸드셰이킹 과정 초기에 클라이언트가 어느 호스트명에 접속 하려는지 서버에 알리는 역할을 한다.
이를 이용하면 같은 IP 주소와 TCP 포트 번호를 가진 서버로 여러 개의 인증서를 사용할 수 있게 되고, 따라서 모든 사이트가 같은 인증서를 사용하지 않아도 동일한 아이피로 여러 HTTPS 웹사이트(또는 TLS 상에서 돌아가는 다른 서비스)를 운영할 수 있게 된다.

 

host

이름 기반 가상 호스팅의 경우 아이피 하나를 통해 서버 (통상적으로 웹 서버) 하나에서 여러 DNS 호스트명을 사용할 수 있게 해 주는데, 이 경우 클라이언트에서 프로토콜의 일부로써 보낸 호스트명을 이용한다 (HTTP의 경우 host 헤더에 호스트명을 적어 보낸다).

 

 

그러나 HTTPS 통신에서는 TLS 핸드 셰이크 시점에서 아직 서버가 HTTP 헤더를 읽을 수 없기 때문에 서버가 HTTP host 헤더를 읽어 어떤 인증서를 보낼 지 선택하는 작업이 불가능하게 되고, 따라서 한 아이피당 한 인증서만을 사용해 거기 포함된 호스트 명만을 사용할 수 있다.

 

장점

클라이언트와 서버가 모두 SNI를 지원할 경우 인증서 하나에 넣기에는 너무 많았던 도메인 네임들을 IP 하나로 모두 사용할 수 있게 된다.
이로써 도메인을 하나의 웹 서버에서 여러 도메인의 웹사이트를 서비스하는 경우에도 인증서를 사용한 HTTPS 활성화가 가능합니다.

 

단점

호스트명 정보가 암호화되어 있지 않기 때문에 사용자가 어느 사이트에 통신을 요청하는지 감청할 수 있다는 문제점이 있습니다. 이로써 어떤 사이트에 접속하는지 타인이 엿볼 수 있고 보안 회사의 필터링 기술이나 국가, 정부 기관에서의 인터넷 검열에 활용되기도 합니다.
클라우드 서비스를 사용하는 사이트에서 SNI에 있는 도메인 정보를 속여 연결하는 기법을 도메인 프런팅(Domain Fronting) 기술이라고 하는데 이것으로 인한 영향을 받을 가능성이 있습니다.

 

SNI 를 사용할 것인지 말 것인지는 보통 브라우저가 판단합니다.

댓글

Designed by JB FACTORY