웹사이트 주소에 ‘자물쇠’가 생기는 이유
우리가 매일 사용하는 웹 서비스 — 네이버, 다음, 구글 같은 사이트들 — 은 모두 웹 브라우저를 통해 접속합니다. 이 과정에서 로그인 정보나 결제 정보처럼 민감한 데이터가 자주 오가게 되죠.
이런 데이터들은 client(브라우저)와 server(서비스 제공자) 사이에서 주고받게 되는데, 당연히 안전하게 전달되어야 합니다.
정보가 안전하게 보호될 때 비로소 사용자는 서비스를 신뢰할 수 있습니다.
그리고 그 신뢰의 첫 관문이 바로 HTTPS입니다.
HTTPS - 그 시작은 HTTP
Hyper Text Transfer Protocol(이하 HTTP)은 웹의 기본이며 하이퍼텍스트 링크를 사용해서 웹페이지를 클라이언트에 전송하여 페이지를 보여줍니다. 웹이 점점 발전하면서 HTTP는 텍스트 데이터 이외의 여러 데이터들은 전송할수 있게 되었습니다. (이미지, 오디오 등)

HTTP는 네트워크 장치 간에 정보를 전송하도록 설계된 애플리캐이션 계층 프로토콜이며 네트워크 프로토콜 스택의 다른 계층 위에서 실행됩니다. (네트워크 모델에 대한 이해는 이 글을 참조하시길 바랍니다.)
HTTP로 인한 데이터 전송의 편리함, 그러나 보안은?❗
웹 사이트에서 HTTP를 사용하는 경우 세션을 모니터링하는 모든 사람이 모든 요청과 응답을 읽을 수 있습니다. 기본적으로 악의적인 공격자는 요청 또는 응답에 포함된 텍스트를 읽고 누군가가 어떤 정보를 요청하고 보내며 받는지 정확히 알 수 있습니다.

HTTPS - 데이터를 어떻게 보호해야할까 🔒
HTTPS는 암호화 프로토콜을 사용하여 통신을 암호화합니다. HTTPS는 Security Socket Layer(SSL) / Transport Layer Security(TSL) 라고 불리기도 합니다. HTTPS는 비대칭 공개키를 사용하여 통신을 보호합니다. 비대칭 공개키는 두 개의 서로 다른 키를 사용하여 두 당사자 간의 통신을 암호화합니다.
- 개인 키 🔑 - 이 키는 웹 사이트 소유자가 관리하며, 비공개로 유지됩니다. 이 키는 웹 서버에 있으며 공개 키로 암호화된 정보를 해독하는 데 사용됩니다.
- 공개 키 🔑 - 이 키는 안전한 방식으로 서버와 상호 작용하고자 하는 모든 사람이 사용할 수 있습니다. 이 키는 정보를 암호화하는데 사용되며, 공개 키로 암호화된 정보는 개인 키로만 해독할 수 있습니다.
TLS HandShake 🤝
(1) 클라이언트 → 서버 : “Hello”
- 브라우저가 서버에 접속 요청을 보내며, 지원 가능한 암호화 방식(암호 스위트)을 전달합니다.
(2) 서버 → 클라이언트 : “Hello + 인증서”
- 서버는 선택된 암호화 방식과 함께 SSL 인증서를 보냅니다.
- 인증서에는 서버의 공개키와 도메인 정보, CA 서명이 들어 있습니다.
(3) 인증서 검증
- 브라우저는 CA(인증기관)의 루트 인증서를 통해 서버 인증서의 유효성을 검증합니다.
- 서명 위조 방지
- 도메인 일치 확인

TLS Handshake가 끝나면 암호화된 통신을 할수 있게 됩니다. 이후는 대칭키 방식으로 통신을 진행하게 됩니다. 이 부분이 궁금하신 분들은 이 글을 참고해주세요.

브라우저에서 관련 정보를 확인할수 있습니다.
youtube의 SSL 인증서가 잘 저장되어있네요. 🙂