HTTP (HyperText Transfer Protocol) 는
클라이언트(브라우저)와 서버 간 데이터를 주고받기 위한 통신 규약(프로토콜)이다.
• 기본 포트: 80번
• 특징: 암호화 없음 (평문 통신)
HTTPS (HTTP Secure) 는 HTTP에 SSL/TLS 암호화 계층이 추가된 프로토콜이다.
로그인 자격 증명이 필요한 웹사이트는 HTTPS를 사용해야 한다.
HTTP 프로토콜을 사용하기 위해서는 인증기관(CA) 로부터 인증서를 발급받아야 한다.
• 기본 포트: 443번
• 특징: 데이터 암호화


하나의 같은 키로 암호화와 복호화를 모두 수행하는 방식
특징
단점

공개키 + 개인키 두 개의 키를 사용하는 방식
• 공개키: 누구나 볼 수 있음
• 개인키: 서버만 가지고 있음
특징
• 키 교환이 안전함
• 보안성이 높음
단점
• 속도가 느림
ex) RSA
실제 HTTPS는 이걸 사용합니다.
동작 방식
1. 비대칭키로 대칭키를 안전학 전달
2. 이후 통신은 대칭키로 빠르게 처리
보안 + 성능 둘 다 잡음
흐름
1. 서버 → 공개키 생성
2. 서버 → CSR (인증서 요청) 생성
3. 서버 → CA(인증기관)에 요청
4. CA → 도메인 검증
5. CA → 디지털 서명 후 인증서 발급
CA는 서버의 공개키를 검증하고
자신의 개인키로 서명을 한다.
클라이언트는 CA 공개키를 검증
서버가 자기 자신이 서명한 인증서
특징
단점
핵심 흐름

1. 클라이언트 → 서버 접속
2. 서버 → SSL 인증서 전달
3. 클라이언트 → CA로 인증서 검증
4. 안전하다고 판단하면 통신 시작

단계별 흐름
1. Client Hello
• 지원 가능한 암호화 방식 전달
2. Server Hello
• 사용할 암호화 방식 선택
• SSL 인증서 전달
3. 인증서 검증
• CA를 통해 서버 신뢰 여부 확인
4. 키 교환
• 대칭키 생성 후 공개키로 암호화하여 전달
5. 세션 생성
• 이후 통신은 대칭키 사용