HTTP의 기본 개념
- HyperText Transfer Protocol의 약자
- 클라이언트인 웹 브라우저와 서버간 정보 요청/응답을 위한 프로토콜
HTTP의 보안상 문제
- HTTP는 바이너리 교환이 아닌 텍스트 교환이기 때문에 웹브라우저와 서버 통신 중에 누군가 데이터를 가로채어 내용을 확인할 수 있다.
- 내용이 노출될 수 있음.
- 특히나, 금융과 관련된 경우, 유저의 패스워드나 계좌비밀번호 등도 모두 웹브라우저와 서버간 통신이므로 HTTP의 경우 해당 정보가 노출될 수 있음.
HTTPS 개념
- 인터넷 상에서 정보를 암호화하는 SSL(Secure Socket Layer) 프로토콜을 이용하여 클라이언트와 서버가 데이터를 주고 받는 통신 규약
- HTTPS의 S는 Secure Socket을 의미
HTTPS 암호화 원리

(출처: http://cryptocat.tistory.com/3)
- 모두에게 공개하는 공개키를 공개키 저장소에 등록하고, 서버는 서버만 알 수 있는 개인키를 소유함.
- 공개키로 암호화된 요청이 오면, 서버는 개인키로 해당 요청을 복호화한다.
- 서버는 요청에 해당하는 응답을 다시 개인키로 암호화하여 클라이언트에 보낸다.
- 클라이언트는 공개키로 해당 응답을 복호화하여 사용한다.
서버가 등록한 공개키로만 해당 응답을 복호화할 수 있으므로 해당 서버로부터 온 응답임을 확신할 수 있다.
서버의 공개키 등록 / 클라이언트에서 공개키 가져오는 방법
CA(Certificate Authority) 업체: 공개키를 암호화하여 암호화된 인증서를 제공해주는 업체
- HTTPS를 적용하기 위해 서버의 공개키와 개인키를 CA 업체에 관리를 요청한다.
- CA업체에서는 본인들의 공개키와 개인키로 "CA 업체의 이름과 관리를 요청한 서버의 공개키, 공개키의 암호화 방법" 등의 정보를 담은 인증서를 만든다.
- 해당 인증서를 CA 업체의 개인키로 암호화하여 서버 개발 업체에 제공한다.
- 서버는 클라이언트로부터 요청이 오면 인증서를 클리이언트에게 준다.
- 세계적인 CA 기업의 공개키는 브라우저가 이미 알기 때문에 브라우저의 CA 리스트 중, 인증서에 적힌 CA 업체의 이름과 같은 업체를 찾는다.
- 찾은 CA 업체의 공개키로 해당 인증서를 복호화한다.
- 인증서를 복호화하여 서버의 공개키를 얻는다.
- 클라이언트에서 서버의 공개키로 요청을 암호화해서 요청을 날리고, 응답을 서버의 공개키로 복호화하여 데이터를 얻는다.
Reference