HTTPS
HTTP에 보안(SSL/TLS 암호화)을 추가한 프로토콜입니다. 데이터를 암호화해서 중간에 누가 가로채도 내용을 볼 수 없게 합니다.
HTTP vs HTTPS
| 항목 | HTTP | HTTPS |
|---|---|---|
| 포트 | 80 | 443 |
| 암호화 | 없음 (평문) | SSL/TLS 암호화 |
| 보안 | 도청, 위변조 가능 | 안전 |
| 속도 | 빠름 | 약간 느림 (암호화 비용) |
| URL | http:// | https:// |
왜 필요한가?
HTTP는 평문으로 전송되어 위험합니다.
- 도청: 패킷 가로채서 내용 확인 가능
- 위변조: 중간에서 데이터 수정 가능
- 피싱: 가짜 사이트 구별 어려움
HTTPS가 보호하는 것
- 기밀성: 암호화로 내용 숨김
- 무결성: 데이터 변조 감지
- 인증: 서버가 진짜인지 인증서로 확인
TLS Handshake 과정
클라이언트 서버
│ │
│─── Client Hello ───────────▶│ 지원하는 암호화 방식 전달
│ │
│◀── Server Hello ────────────│ 암호화 방식 선택 + 인증서 전달
│ │
│ 인증서 검증 (CA 확인) │
│ │
│─── 키 교환 ────────────────▶│ 대칭키 생성을 위한 정보 교환
│ │
│◀── 완료 ───────────────────│
│ │
└───── 암호화 통신 시작 ───────┘
인증서와 CA
- SSL 인증서: 서버의 신원을 증명하는 문서
- CA(Certificate Authority): 인증서를 발급하는 신뢰 기관 (Let's Encrypt, DigiCert 등)
- 브라우저는 CA 목록을 가지고 있어서 인증서 진위 확인 가능
암호화 방식
- 비대칭 암호화: 처음 키 교환할 때 사용 (느림)
- 대칭 암호화: 실제 데이터 전송 시 사용 (빠름)
- 둘을 조합해서 보안과 속도 모두 확보
현재 상태
- 대부분의 웹사이트가 HTTPS 사용
- 브라우저가 HTTP 사이트에 "주의 요함" 경고 표시
- SEO에서도 HTTPS가 유리