HTTPS

HTTPS(Hypertext Transfer Protocol Secure)는 HTTP 통신을 TLS로 보호하는 방식이다. 웹 브라우저와 서버 사이에서 전송되는 HTTP 요청과 응답을 암호화하고, 통신 내용이 전송 도중 변경되지 않았는지 검증하며, 접속한 서버가 대상 도메인을 대표할 권한...

정식 명칭Hypertext Transfer Protocol Secure
분류응용 계층 프로토콜, 보안 통신
기반 프로토콜HTTP, TLS
기본 URI 스킴https
기본 포트443
표준RFC 9110, RFC 8446
이전 기반 기술SSL
주요 기능암호화, 무결성 보호, 서버 인증

HTTPS(Hypertext Transfer Protocol Secure)는 HTTP 통신을 TLS로 보호하는 방식이다. 웹 브라우저와 서버 사이에서 전송되는 HTTP 요청과 응답을 암호화하고, 통신 내용이 전송 도중 변경되지 않았는지 검증하며, 접속한 서버가 대상 도메인을 대표할 권한을 가진 서버인지 인증하는 데 사용된다. https URI 스킴은 HTTP 의미론과 함께 정의되며, 일반적으로 기본 포트 443을 사용한다.[1]

HTTPS는 HTTP를 대체하는 별개의 응용 프로토콜이라기보다 HTTP 메시지를 보안 전송 계층 위에서 교환하는 구성이다. HTTP의 메서드, 상태 코드, 헤더와 자원 식별 방식은 그대로 사용하고, 실제 HTTP 메시지가 전달되기 전에 클라이언트와 서버가 TLS 연결을 수립한다. 초기 HTTPS는 HTTP over SSL이라고도 불렸으나, SSL은 이후 TLS로 대체되었다. HTTP를 TLS 위에서 전송하는 초기 규격은 RFC 2818에서 정리되었으며, 현재 https 스킴의 의미와 연결 요구 사항은 RFC 9110에 통합되어 있다.[2]

TLS 연결에서는 클라이언트와 서버가 사용할 프로토콜 버전과 암호화 알고리즘을 협상하고, 서버가 제시한 인증서를 검증하며, 이후 통신을 보호할 세션 키를 합의한다. 현재의 TLS 1.3은 도청, 메시지 변조와 위조를 방지하도록 설계되었으며, 이전 버전보다 핸드셰이크 절차와 암호 스위트 구성을 단순화하였다.[3]

일반적인 공개 웹사이트에서는 PKIX.509 인증서를 이용해 서버를 인증한다. 서버 인증서에는 인증 대상 도메인과 공개 키, 발급자, 유효 기간 등의 정보가 포함되며, 브라우저는 신뢰 저장소의 루트 인증 기관까지 이어지는 인증서 체인과 도메인 일치 여부를 검사한다. 공개적으로 신뢰되는 TLS 서버 인증서를 발급하는 인증 기관은 CA/Browser Forum의 Baseline Requirements를 비롯한 정책과 검증 절차를 따른다.[4]

HTTPS가 보호하는 범위는 클라이언트와 TLS 연결 종단 사이의 전송 구간이다. URL의 경로와 쿼리, HTTP 헤더와 본문은 TLS 레코드 안에서 암호화되지만, 통신 상대의 IP 주소와 전송량, 연결 시점 같은 네트워크 메타데이터까지 모두 숨기지는 않는다. 또한 TLS가 리버스 프록시, 콘텐츠 전송 네트워크 또는 로드 밸런서에서 종료되면 그 이후 구간은 별도의 TLS 연결이나 내부 보안 정책으로 보호해야 한다.

HTTPS는 웹 로그인과 결제 같은 제한된 기능에만 사용되는 기술에서 웹의 기본 전송 방식으로 확대되었다. 현대 웹 브라우저는 HTTPS 문서에 보안 컨텍스트를 부여하며, Service Worker, Web Authentication, 정밀한 위치 정보와 여러 장치 API처럼 보안에 민감한 웹 기능을 HTTPS 환경에서만 제공한다. HTTP/2는 평문 전송 자체를 규격상 금지하지 않지만 주요 웹 브라우저에서는 일반적으로 TLS 위에서 사용되며, HTTP/3는 QUIC에 통합된 TLS 1.3을 통해 연결 보안을 구성한다.

역사

명칭과 표준

HTTP와 TLS의 관계

연결 수립 과정

TCP 기반 연결

TLS 핸드셰이크

HTTP 메시지 교환

세션 재개와 0-RTT

암호화와 무결성 보호

대칭 키 암호화

공개 키 암호와 키 합의

인증된 암호화

순방향 비밀성

인증서와 공개 키 기반 구조

X.509 인증서

인증 기관

인증서 체인과 신뢰 저장소

도메인 이름 검증

DV, OV와 EV 인증서

인증서 발급과 갱신

인증서 폐기

서버 이름과 가상 호스팅

Server Name Indication

Subject Alternative Name

다중 도메인과 와일드카드 인증서

프로토콜 협상

Application-Layer Protocol Negotiation

HTTP/1.1

HTTP/2

HTTP/3와 QUIC

URI와 포트

https URI 스킴

기본 포트 443

원본과 동일 출처 정책

HTTP에서 HTTPS로의 전환

웹 브라우저의 처리

인증서 검증

보안 표시

보안 컨텍스트

혼합 콘텐츠

인증서 오류

HTTPS 배포

TLS 서버 구성

인증서 자동 발급

리버스 프록시와 TLS 종료

콘텐츠 전송 네트워크

로드 밸런서

내부 통신의 재암호화

보안 정책과 보조 기술

HTTP Strict Transport Security

HTTPS DNS 레코드

Certificate Transparency

Online Certificate Status Protocol

OCSP Stapling

DNS Certification Authority Authorization

Encrypted Client Hello

상호 TLS 인증

성능

핸드셰이크 지연

세션 재개

연결 재사용

하드웨어 가속

HTTP/2와 HTTP/3의 영향

보호 범위

기밀성

무결성

서버 인증

클라이언트 인증

노출되는 메타데이터

공격과 위협

중간자 공격

인증서 오발급

프로토콜 다운그레이드

SSL Stripping

혼합 콘텐츠 공격

TLS 종료 지점 침해

키와 인증서 유출

운영과 관리

암호 스위트와 TLS 버전 정책

개인 키 보관

인증서 수명 주기

모니터링과 갱신 자동화

오류와 장애 대응

다른 보안 기술과의 관계

VPN

SSH

DNS over HTTPS

Oblivious HTTP

종단 간 암호화

활용 분야

장점과 한계

관련 문서

  1. RFC 9110: HTTP Semantics
  2. RFC 2818: HTTP Over TLS
  3. RFC 8446: The Transport Layer Security (TLS) Protocol Version 1.3
  4. CA/Browser Forum: Baseline Requirements for TLS Server Certificates