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]
일반적인 공개 웹사이트에서는 PKI와 X.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을 통해 연결 보안을 구성한다.