/
가상 호스트(Vritual Host)와 SNI(Server Name Indication)
가상 호스트(Vritual Host)와 SNI(Server Name Indication)
웹 서버의 멋진 기능중에 하나는 가상 호스트(Virtual Host)로 이 기능을 사용하여 추가 장비없이 새로운 웹 서비스를 시작할 수 있습니다.
웹 서버는 브라우저의 HTTP Request Header 에서 Host 헤더를 통해 어떤 가상 호스트의 컨텐츠를 서비스할지 결정합니다.
즉 다음과 같이 curl 명령을 수행할 경우
$ curl -v google.com
아래와 같이 서버에 Host HTTP Header(Host: google.com) 을 보내므로 웹 서버는 정확한 가상 호스트를 결정할 수 있습니다.
GET / HTTP/1.1 Host: google.com User-Agent: curl/7.43.0 Accept: */*
SNI 란?
하지만 SSL/TLS의 경우 HTTP보다 먼저 수행되므로 브라우저가 Host Header 를 보내기 전에 SSL handshaking이 이루어 지고 웹 서버는 첫 번째 SSL 가상 호스트에 설정된 서버 인증서를 전송합니다.
그래서 SSL/TLS 기반으로 여러 개의 가상 호스트를 설정했을 경우 브라우저에서 SSL 인증서 검증시 인증서와 HostName 이 다르다는 에러가 발생할 수 있습니다.
이런 문제를 해결하기 위해 "서버 이름 표시(SNI;Server Name Indication - RFC 4366)" 규격이 있으며 대부분의 브라우저, 웹 서버, HTTPS 구현 라이브러리가 SNI 를 지원하므로 SSL/TLS에서도 가상 호스트를 사용할 수 있습니다.
Windows XP 와 JDK 6 은 SNI 를 지원하지 않으며 전체 목록은 위키피디아의 SNI에서 확인할 수 있습니다.
같이 보기
- apache httpd 에 SSL/HTTPS 적용 및 VirtualHost 에 SNI(Server Name Indication) 문제 해결
- 가상 호스트(Virtual Host) 동작 방식
Ref
, multiple selections available,
Related content
가상 호스트(Virtual Host) 동작 방식
가상 호스트(Virtual Host) 동작 방식
More like this
엔진엑스 가상 호스트 설정(nginx Virtual Host Setup)
엔진엑스 가상 호스트 설정(nginx Virtual Host Setup)
More like this
nginx + php-fpm 환경에서 가상 호스트(Virtual Host) 쉽게 구성하기
nginx + php-fpm 환경에서 가상 호스트(Virtual Host) 쉽게 구성하기
More like this
Linux host 명령어 사용법 및 예제 정리
Linux host 명령어 사용법 및 예제 정리
More like this
네트워크 구성
네트워크 구성
More like this
apache httpd 에 SSL/HTTPS 적용 및 VirtualHost 에 SNI(Server Name Indication) 문제 해결
apache httpd 에 SSL/HTTPS 적용 및 VirtualHost 에 SNI(Server Name Indication) 문제 해결
More like this