1. HTTPS란?
- HTTP + SSL/TLS
- 웹 브라우저와 서버가 중간에서 훔쳐보거나 위조하지 못하도록 암호화된 통신을 하는 프로토콜.
- 우리가 흔히 주소창에서 보는 https\:// 가 바로 이 방식.
2. 핵심 요소
(1) SSL 인증서 = 서버의 "공인 신분증" 🆔
-> 브라우저(크롬, 사파리 등)는 유명 CA들의 정보를 이미 알고 있어서 인증서의 서명을 검증 가능.
(2) SSL Handshake = "비밀 악수"
인증서를 통해 서버의 신원을 확인한 뒤, 이제 둘만 아는 대칭키(비밀 열쇠)를 만드는 과정.
간단한 흐름
-
클라이언트 → 서버: "나 이런 암호화 방식들 쓸 수 있어."
-
서버 → 클라이언트: "좋아, 이 방식으로 하자. 그리고 내 신분증(SSL 인증서 + 공개키) 여기 있어."
-
클라이언트:
- 서버 인증서가 진짜인지 CA를 통해 검증
- 직접 새로운 **대칭키(비밀 열쇠)**를 생성
- 대칭키를 서버의 **공개키(자물쇠)**로 잠가서 서버에 전달
-
서버:
- 자신만 가진 **개인키(열쇠)**로 대칭키를 열어 확인
-> 결과: 클라이언트와 서버는 동일한 대칭키를 공유하게 됨.
3. HTTPS가 안전한 이유
-
기밀성 (Confidentiality)
- 오가는 데이터는 대칭키로 암호화 → 중간에서 훔쳐도 해독 불가
-
무결성 (Integrity)
- 데이터가 중간에 변조되면 브라우저가 감지하고 연결 끊음
-
인증 (Authentication)
- SSL 인증서로 “내가 진짜 서버다”라는 걸 증명
4. 꼭 기억해야 할 흐름
① 서버 신분증(SSL 인증서) 확인
② 비밀 열쇠(대칭키) 공유
③ 암호화 통신 시작
5. 추가로 알아두면 좋은 점
- HTTPS 기본 포트: 443 (HTTP는 80)
- 무료 인증서: Let's Encrypt 같은 서비스로 자동 발급/갱신 가능
- HTTP/2, HTTP/3 같은 최신 프로토콜은 HTTPS를 전제로 설계됨 (속도/효율 ↑)
- SSL은 옛 용어, 현재는 정확히 TLS(Transport Layer Security) 라고 부름
최종 흐름
- HTTPS = 안전한 HTTP
- 2.SSL/TLS 인증서로 신원을 보장하고
- 3.Handshake로 비밀 열쇠(대칭키)를 공유한 뒤
- 이후 모든 데이터는 암호화 통신으로 주고받음