HTTP
- HTTPS : SSL(Secure Socket Layer)을 이용한 통신방식
- HTTP : Hyper Text Transfer Protocol
- Hyper Text(HTML,..)을 전송하기 위해 만든 프로토콜
- 클라이언트와 서버 사이의 요청/응답 프로토콜
- 웹에서 통신할 때 사용
- HTTP의 약점
- 암호화하지 않은 통신이기 때문에 도청 가능
- 완전성을 증명할 수 없음 (정보 변조 가능)
- 통신 상대를 확인하지 않아 위장 가능
(누가 request해도 response하는 구조, response한 서버가 내가 의도한 서버인지 확인 불가)

통신 방법
- 클라이언트(브라우저)가 서버에 접속하면서 정보 보냄
- 클라이언트가 생성한 random date
- browser에서 지원하는 암호화 기법
- 서버가 클라이언트에게 응답
- 서버가 생선한 random data
- 서버가 상요할 가장 안정된 암호화 기법
- 인증서 (private key로 암호화한 서비스 정보, public key )
- 클라이언트는 믿을 수 있는 CA에서 발급한 인증서 인증서인지 확인
- 클라이언트는 실제 CA에서 발급한 인증서인지 확인
=> 대칭키 방식 (public, private key를 사용하는 암호화 방식)
- 인증서에 있는 서비스 정보를 Public key로 복호화
- 통신에 사용할 key를 클라이언트와 서버는 공유
=> 공통키 방식 ( 하나의 key를 공유하는 암호화 )
- 공통의 세션키를 생성해 데이터를 암호화/복호화

참고 : https://velog.io/@moonyoung/HTTPS%EC%9D%98-%EC%9B%90%EB%A6%AC