HTTPS란?
- HTTP(HyperText Transfer Protocol)에 보안 계층(SSL/TLS)을 추가하여 데이터의 암호화와 인증을 지원하는 프로토콜
- port : HTTPS 443, HTTP 80
HTTPS 주요 구성요소
- HTTP: 웹 콘텐츠를 주고받는 프로토콜
- SSL/TLS: 데이터를 암호화하고 인증하는 프로토콜
- 공개키/개인키 암호화 방식(비대칭키)
- 대칭키 암호화 방식(공유된 하나의 암호키)
- 디지털 인증서: 서버의 신원 확인과 공개키 제공에 사용
HTTPS 연결 절차 (SSL/TLS Handshake 과정)
① 클라이언트가 HTTPS 연결 요청
② 서버가 인증서 전달 (서버 인증)
- 서버는 자신의 공개키가 포함된 디지털 인증서를 클라이언트에게 전송
- 인증서는 CA (Certificate Authority, 인증기관)가 서명한 것
③ 클라이언트가 인증서 검증
- 브라우저가 받은 인증서의 유효성을 검사
1) 신뢰할 수 있는 CA가 발급한 인증서인지
2) 인증서의 유효기간이 지났는지
3) 인증서의 도메인이 요청한 도메인과 일치하는지 확인합니다. - 검증이 실패 시 브라우저는 경고를 표시하고 연결 차단
-> 보안 경고 페이지(Security Warning Page) "안전하지 않음!"
④ 암호화 방식 및 세션 키 생성
- 클라이언트가 대칭키(세션 키)를 생성
- 클라이언트는 서버 인증서의 공개키로 세션 키를 암호화하여 서버로 전달
⑤ 서버가 세션 키 복호화
- 서버는 자신의 개인키를 사용하여 세션 키를 복호화
- 이후 클라이언트와 서버는 이 세션 키(대칭키)를 이용해 데이터를 암/ 복호화 진행
클라이언트가 HTTPS 요청 → 서버가 디지털 인증서 전달 → 클라이언트 인증서 검증 → 세션 키 생성 → 세션 키 암호화 전달 → 서버가 복호화 → 이후 대칭키 방식의 암호화 통신 수행
암호화된 데이터 통신
- SSL/TLS Handshake가 완료된 후, HTTP 요청/응답 데이터는 모두 암호화된 형태로 전달
- 암호화된 데이터는 오직 클라이언트와 서버만 복호화할 수 있으며,
중간에 공격자가 데이터를 가로채더라도 내용을 볼 수 없음
HTTPS의 장점과 단점
장점
- 데이터의 기밀성 보장
- 데이터의 무결성 유지 (위변조 방지)
- 웹사이트 신원 인증
- 사용자 신뢰성 증가
단점
- 암호화 및 복호화 과정에서 성능 오버헤드 발생 (최근 하드웨어 성능 향상으로 영향도 낮음)
- SSL 인증서 발급 비용 (무료 인증서 서비스로 부담 낮음)
'CS 정리' 카테고리의 다른 글
| Java + Kotlin 혼용 개발 (0) | 2025.07.31 |
|---|---|
| BunkerWeb, 도입 시 겪은 이슈: HTTP/2 프로토콜 (0) | 2025.07.29 |
| OAuth2의 4가지 Grant Type (0) | 2025.07.21 |
| Spring Security + Keycloak으로 SSO 구현하기 (0) | 2025.07.13 |
| 네트워크 프록시 (0) | 2025.07.08 |