← 아티클 목록

http https 차이 — 암호화와 TLS로 이해하는 동작 차이

2028-05-29#networking#https#tls

"HTTPS는 HTTP에 보안 붙인 것"이라는 한 줄은 맞지만, 무엇이 어떻게 안전해지는지 모르면 면접이나 트러블슈팅에서 막힙니다. 차이는 끝의 S 하나, 즉 TLS로 암호화하느냐에서 전부 갈립니다.

핵심 차이: 평문 vs 암호화

HTTP는 데이터를 평문으로 보냅니다. 중간에서 패킷을 가로채면 로그인 비밀번호까지 그대로 읽힙니다. HTTPS는 그 위에 TLS 계층을 끼워 주고받는 내용을 암호화합니다. 가로채도 암호문이라 의미를 알 수 없습니다.

구분HTTPHTTPS
암호화없음 (평문)TLS로 암호화
기본 포트80443
서버 인증없음인증서로 신원 확인
도청·변조취약방어됨
속도handshake 없음TLS handshake 약간 추가

HTTPS가 보장하는 건 세 가지입니다. 기밀성(내용 도청 방지), 무결성(중간 변조 방지), 인증(접속한 서버가 진짜 그 서버임).

TLS handshake가 하는 일

브라우저가 HTTPS로 접속하면 본문을 주고받기 전에 짧은 협상을 합니다.

  1. 서버가 인증서(공개키 포함)를 제시한다.
  2. 브라우저가 인증서를 신뢰된 CA가 서명했는지 검증한다.
  3. 양쪽이 이번 세션에만 쓸 대칭키를 안전하게 합의한다.
  4. 이후 실제 데이터는 그 대칭키로 암호화해 주고받는다.

자물쇠 아이콘은 이 검증이 통과했다는 표시일 뿐, "이 사이트는 착하다"는 뜻이 아닙니다. 연결이 암호화됐고 서버 신원이 확인됐다는 의미입니다.

로컬 또는 서버
curl -v https://example.com   # TLS handshake·인증서 정보 출력
OUTPUT
*  SSL connection using TLSv1.3 / TLS_AES_256_GCM_SHA384
*  subject: CN=example.com
*  issuer: C=US; O=DigiCert Inc; CN=...

TLSv1.3로 연결됐고, 인증서 subject가 접속한 도메인과 일치하는지가 핵심입니다. 인증서 만료나 도메인 불일치면 브라우저가 경고를 띄웁니다.

왜 지금은 사실상 필수인가

과거엔 로그인 페이지만 HTTPS를 썼지만, 지금은 전 구간 HTTPS가 표준입니다. 브라우저는 HTTP 사이트에 "주의 요함"을 표시하고, HTTP/2·HTTP/3 같은 최신 프로토콜은 사실상 HTTPS를 전제로 동작합니다. 인증서도 Let's Encrypt로 무료 발급이 가능해 도입 장벽이 사라졌습니다.

요점 정리

  • 차이의 본질은 TLS 암호화 여부 — 포트도 80 vs 443으로 갈린다.
  • HTTPS는 기밀성·무결성·서버 인증 세 가지를 보장한다.
  • TLS handshake에서 인증서 검증 후 세션용 대칭키를 합의한다.
  • 자물쇠는 "안전한 사이트"가 아니라 "암호화·신원 확인됨"의 표시다.

TLS handshake와 인증서를 curl·패킷으로 직접 들여다보는 실습은 네트워크 트랙에서 회원가입 없이 무료로 할 수 있습니다.