최근 Proxy 서버를 설정하는 과정에서
SSL 인증서가 없는 도메인에 대해 TCP Proxy를 구축하면서
SNI(Server Name Indication)를 인식할 수 있도록
nginx
의 stream_ssl_preread_module
을 사용해봤다.
이를 통해 SNI와 DNS, 그리고 HTTPS의 차이점에 대해 명확히 이해할 필요가 있었다.
이번 포스팅에서는 이들 개념의 차이점을 자세히 알아보도록 하겠다.
SNI (Server Name Indication)
SNI(Server Name Indication)는 TLS/SSL 프로토콜의 확장 기능으로,
클라이언트가 서버에 접속할 때 어떤 호스트명(도메인 이름)에 대한 요청인지 서버에 전달해주는 역할을 한다.
SNI는 TLS 핸드셰이크 초기 단계에서 서버에 전달되며,
이를 통해 서버는 적절한 SSL 인증서를 선택하여 제공할 수 있다.
SNI의 주요 기능
- 서버 멀티 호스팅: 한 IP 주소에서 여러 도메인에 대해 SSL을 제공할 수 있다.
- 초기 핸드셰이크에서 도메인 인식: SNI를 통해 서버는 클라이언트가 접근하려는
도메인을 초기 핸드셰이크 과정에서 인식할 수 있다.
DNS (Domain Name System)
DNS(Domain Name System)는 도메인 이름과 IP 주소를 매핑해주는 시스템이다.
클라이언트는 도메인 이름을 통해 접속하려는 서버의 IP 주소를 DNS 서버를 통해 얻는다.
DNS의 주요 기능
- 도메인 이름 해석: 사람이 읽기 쉬운 도메인 이름을 IP 주소로 변환한다.
- 분산 구조: DNS 서버는 전 세계에 분산되어 있어, 특정 도메인의 IP 주소를 쉽게 찾을 수 있다.
HTTPS (HyperText Transfer Protocol Secure)
HTTPS(HyperText Transfer Protocol Secure)는 HTTP에 SSL/TLS 프로토콜을 결합한 것이다.
HTTPS는 데이터 전송 중에 도청과 변조를 방지하기 위해 사용된다.
HTTPS의 주요 기능
- 데이터 암호화: 전송되는 데이터는 암호화되어 중간에서 도청해도 내용을 알 수 없다.
- 서버 인증: 클라이언트는 SSL 인증서를 통해 서버의 신뢰성을 확인할 수 있다.
- 데이터 무결성: 전송되는 데이터가 중간에서 변조되지 않았음을 보장한다.
SNI와 HTTPS의 차이점
SNI와 HTTPS는 서로 다른 기능과 목적을 가진다. 여기서 중요한 차이점을 명확히 알아두자.
도메인 인식 시점
- SNI: TLS 핸드셰이크 초기 단계에서 클라이언트가 요청하는 도메인을 서버에 전달한다.
이를 통해 서버는 해당 도메인에 맞는 인증서를 선택할 수 있다. - HTTPS: TLS 핸드셰이크가 완료되고, SSL 인증서를 통해 보안 연결이 확립된 후에
HTTP 프로토콜로 데이터를 주고받는다.
역할과 목적
- SNI: 서버가 여러 도메인에 대해 SSL을 제공할 수 있도록 한다.
한 서버가 여러 도메인에 대해 다른 인증서를 사용할 수 있게 해준다. - HTTPS: 데이터 전송의 보안을 제공한다.
데이터를 암호화하고, 서버의 신원을 인증하며, 데이터의 무결성을 보장한다.
TCP Proxy에서 SNI 사용의 이유
TCP Proxy를 설정할 때, stream_ssl_preread_module
을 사용하여 SNI 정보를 읽어오는 이유는 다음과 같다:
초기 핸드셰이크 단계에서 도메인 정보 확보
SNI를 사용하면 TLS 핸드셰이크 초기 단계에서 클라이언트가 접근하려는 도메인 정보를 얻을 수 있다.
이를 통해 TCP Proxy는 SSL 인증서를 사용하지 않고도 도메인 정보를 기반으로
적절한 백엔드 서버로 트래픽을 전달할 수 있다.
SSL 인증서 없이 도메인 기반 라우팅
stream_ssl_preread_module
을 통해 SNI 정보를 읽어오면,
TCP Proxy는 SSL 인증서를 사용하지 않고도 도메인 기반 라우팅을 할 수 있다.
이는 SSL 인증서가 없는 상황에서도 다양한 도메인에 대한 트래픽을 올바른 백엔드 서버로 전달할 수 있게 해준다.
요약
- SNI: TLS 핸드셰이크 초기 단계에서 클라이언트가 접근하려는 도메인을 서버에 전달해주는 기능.
이를 통해 서버는 적절한 SSL 인증서를 선택할 수 있다. - DNS: 도메인 이름과 IP 주소를 매핑해주는 시스템.
- HTTPS: HTTP에 SSL/TLS를 결합하여 데이터 전송 중 보안을 제공하는 프로토콜.
- TCP Proxy에서 SNI 사용: SNI를 통해 SSL 인증서 없이도 도메인 기반 라우팅이 가능하다.
초기 핸드셰이크 단계에서 도메인 정보를 확보하여 적절한 백엔드 서버로 트래픽을 전달할 수 있다.
'Study > Network' 카테고리의 다른 글
IGW와 NAT는 뭐가 다를까? (0) | 2024.12.19 |
---|---|
[네트워크 기초] 네트워크 용어 총 정리 (3) | 2024.04.08 |
[네트워크] 라우팅, 직접 해보자 1 (1) | 2024.04.04 |
[네트워크 기초] 무선 네트워크 (0) | 2024.04.03 |
[네트워크 기초] 네트워크 발전 과정 (1) | 2024.04.03 |
댓글