TLS 핸드셰이크로 알아보는 HTTPS 연결 원리

브라우저 주소창의 자물쇠 아이콘이 뜨기까지, 몇 단계의 대화가 오가는지 순서대로 살펴보세요.

🔒

1. HTTPS와 TLS의 관계

HTTPS는 일반 HTTP 통신을 TLS(Transport Layer Security)로 암호화한 것입니다. 브라우저와 서버는 실제 데이터를 주고받기 전에 TLS 핸드셰이크라는 사전 협상 과정을 거쳐 암호화에 쓸 키를 안전하게 교환합니다.

👋

2. 1단계: ClientHello

브라우저가 먼저 자신이 지원하는 TLS 버전과 암호화 방식(암호 스위트) 목록, 무작위 값을 담은 ClientHello 메시지를 서버에 보내며 연결을 제안합니다.

📜

3. 2단계: ServerHello와 인증서 제시

서버는 제안받은 방식 중 하나를 선택해 ServerHello로 응답하고, 자신이 신뢰할 수 있는 사이트임을 증명하는 SSL/TLS 인증서를 함께 전달합니다.

🔑

4. 3단계: 키 교환과 세션 키 생성

브라우저는 인증서를 검증한 뒤, 비대칭 암호화(공개키 방식)로 안전하게 값을 주고받아 이후 통신에 쓸 대칭키인 세션 키를 서버와 함께 계산해 만듭니다.

5. 4단계: Finished, 암호화 통신 시작

양쪽은 지금까지 주고받은 정보가 중간에 변조되지 않았는지 확인하는 Finished 메시지를 교환합니다. 이후의 모든 데이터는 앞서 만든 세션 키로 암호화되어 오갑니다.

6. TLS 1.3에서 더 빨라진 점

이전 버전인 TLS 1.2는 핸드셰이크에 왕복 2회(2-RTT)가 필요했지만, TLS 1.3은 협상 단계를 줄여 1회 왕복(1-RTT)만으로 마칠 수 있고, 재접속 시에는 0-RTT로 더 빠르게 연결할 수 있습니다.

무료 SSL 인증서를 직접 적용해보고 싶다면

핸드셰이크에서 서버가 제시하는 인증서를 내 사이트에도 직접 적용해보고 싶다면무료 SSL 인증서 가이드를 참고해보세요.

HTTP 프로토콜 발전 과정도 함께 보세요

TLS 1.3은 QUIC 기반의 HTTP/3와도 밀접하게 연결되어 있습니다.HTTP/1.1·HTTP/2·HTTP/3 차이 완전정복도 확인해보세요.

자주 묻는 질문

TLS와 SSL은 같은 건가요?

SSL은 TLS의 이전 이름입니다. SSL 3.0 이후 규격이 개선되면서 이름이 TLS로 바뀌었고, 지금 실제로 쓰이는 것은 사실상 모두 TLS이지만 관용적으로 아직도 SSL이라는 이름이 널리 쓰입니다.

핸드셰이크 때문에 HTTPS가 HTTP보다 느린가요?

처음 연결할 때는 핸드셰이크 시간만큼 아주 약간의 지연이 추가되지만, TLS 1.3과 세션 재사용(Session Resumption) 기술 덕분에 체감할 수 있는 속도 차이는 매우 작습니다.