HTTPS는 TLS로 보호된 연결을 통해 HTTP 메시지를 주고받는 방식이다. 웹페이지 내용뿐 아니라 요청·응답 헤더도 전송 중 암호화하며, 인증서 검증으로 접속한 서버의 신원을 확인한다. 웹주소의 https://가 이 방식을 나타낸다. MDN HTTPS
무엇을 보호하는가
TLS는 전송 데이터의 기밀성, 변경 탐지, 상대방 인증을 제공한다. 사용자가 로그인 폼을 전송할 때 네트워크 중간에서 비밀번호를 그대로 읽거나 내용을 바꾸기 어렵게 만든다. 일반적인 웹 연결에서는 서버가 인증서를 제시하고 브라우저가 도메인과 신뢰 관계를 검증한다.
페이지 전체에 적용하기
HTML만 HTTPS이고 스크립트나 이미지가 HTTP라면 혼합 콘텐츠가 된다. 브라우저는 콘텐츠 종류와 정책에 따라 이를 차단하거나 HTTPS로 올릴 수 있다. 따라서 배포할 때는 문서뿐 아니라 정적 파일, API, 리디렉션의 최종 주소까지 확인한다. MDN TLS와 혼합 콘텐츠
| 확인 대상 | 확인할 내용 |
|---|---|
| 인증서 | 요청한 호스트명과 일치하는지 |
| 리소스 | 스크립트·이미지도 HTTPS인지 |
| 로그인 요청 | 안전한 경로로 전송되는지 |
리버스 프록시에서 TLS 연결을 종료한다면 프록시에서 애플리케이션까지의 구간도 별도로 설계한다. 외부 주소에 자물쇠가 보인다는 사실만으로 내부 구간까지 암호화됐다고 판단할 수 없다.
보장하지 않는 것
HTTPS는 사이트 운영자의 설명이 사실이라는 보증이 아니다. 악성 사이트도 정상 인증서를 사용할 수 있고, 서버가 받은 데이터를 안전하게 저장하는지는 별도 문제다. 암호화는 전송 경로를 보호한다. 사용자 권한 검증, 입력값 처리, 쿠키 정책은 애플리케이션에서 함께 다뤄야 한다.