HTTP 프로토콜에 보안(Secure)을 더한 프로토콜이다.
데이터를 보내기 전에 TLS(SSL)를 적용하여 데이터를 암호화한다.
주로 443 포트를 사용한다.
HTTPS는 대칭키를 사용하여 더 빠른 통신이 가능하다.
TLS(SSL)
넷스케이프에서 개발한 SSL은 현재는 국제 인터넷 표준화 기구(IETF)에 의해 TLS로 표준화 되었다.
1. 서버는 인증기관(Certificate Authority, CA)에서 인증서를 발급받아 안전한 서버임을 인증받고 인증서를 발급받는다.
2. 클라이언트는 인증기관들의 공개키를 받아 보관한다.
3. 만약 클라이언트가 https 스키마를 갖는 URL을 만나면 HTTPS 통신을 시작한다.
4. 클라이언트와 서버는 TLS Handshake 과정을 거쳐 통신에 사용할 대칭키를 생성한다.
5. 대칭키를 사용하여 암호화된 데이터를 주고 받는 HTTPS 통신을 시작한다.
HTTPS 통신에서 사용할 대칭키를 생성하고 공유하는 과정이다.
TLS Handshake는 전송 계층의 연결이 된 후에 시작한다.
TLS는 응용 계층 프로토콜이다. 그렇기 때문에 안정적인 연결이 보장된 전송 계층 프로토콜인 TCP를 주로 사용하지만 UDP, SCTP 등 다른 프로토콜에서도 사용 가능한 표준이 있다.
TLS Handshake는 대부분 RSA 알고리즘을 사용한다. 4번 과정에서 클라이언트는 인증서에서 읽어온 서버의 공개키로 PMS를 만들어 서버에 전송하고, 서버는 개인키로 이를 해독한다.
Diffie-Hellman 방식은 DH 변수를 통해 클라이언트와 서버가 각자 PMS를 생성하고 세션키를 얻는다.
http://www.ktword.co.kr/abbr_view.php?m_temp1=3132
https://blog.naver.com/PostView.nhn?blogId=sehyunfa&logNo=221812730631&categoryNo=19&parentCategoryNo=0&viewDate=¤tPage=1&postListTopCurrentPage=1&from=postView
https://velog.io/@moonyoung/HTTPS%EC%9D%98-%EC%9B%90%EB%A6%AC#%ED%86%B5%EC%8B%A0-%EB%B0%A9%EB%B2%95
https://www.cloudflare.com/ko-kr/learning/ssl/what-happens-in-a-tls-handshake/
https://security.stackexchange.com/questions/170833/why-does-tls-require-tcp