본문 바로가기
넓고 얕은 네트워크 지식

HTTP와 HTTPS, SSL/TLS 초간단 요약

by 팡펑퐁 2023. 2. 14.
728x90

📌 HTTP(HyperText Transfer Protocol)

  • 웹 서버와 웹 브라우저 간의 데이터 전송을 위한 응용계층의 프로토콜이다.
  • HTML과 같은 하이퍼미디어 데이터를 전송한다.

 

📌 HTTPS(HyperText Transfer Protocol Secure)

  • SSL/TLS 인증서를 사용하는 HTTP라고 보면 된다.
  • SSL/TLS(보안 소켓 계층)을 사용하여 서버와 브라우저의 연결을 암호화하여 안전한 통신로를 만든다.

 

 

📌 SSL/TLS

  • SSL 프로토콜은 네트워크 연결을 보호하기 위한 암호화 프로토콜로, TLS는 SSL의 후속 버전(업그레이드)라고 보면 된다.
  • SSL/TLS 인증서를 사용하여 다른 시스템에 대한 암호화된 네트워크 연결을 설정할 수 있다.
  • 클라이언트와 서버 간 응용 계층과 TCP 전송 계층 사이에 위치하나 전송계층과 보다 밀접하게 동작한다.

 

SSL/TLS 인증서

  • 클라이언트와 서버 간의 통신을 제3자가 보증해 주는 전자 문서이다.
  • 클라이언트가 접속한 서버가 신뢰할 수 있는 서버인지 판단할 수 있다.
  • SSL 통신에 사용될 공개키를 클라이언트에게 전달하는 역할을 한다.

 

CA(Certificate Authority)

  • 디지털 인증서를 발급하는 기관으로 보통의 브라우저는 CA 리스트를 가지고 있다.

 

 

SSL/TLS handshake

  • TCP 3 way handshake가 우선 수행된다.
  • 클라이언트가 clien hello를 서버에게 전송한다.
  • 서버는 SSL 인증서를 클라이언트에게 제공하는데 이 인증서 안에는 서버의 공개키와 서비스 정보가 담겨있다.
    • 이 인증서는 인증기관의 개인키로 암호화되어 있고 클라이언트는 브라우저에 내장된 CA 리스트가 있어 인증기관의 공개키로 복호화가 가능하다.
  • 클라이언트는 인증서를 발급한 CA가 브라우저의 CA 리스트에 있는지 확인하고 있다면 CA의 공개키를 이용해 SSL 인증서를 복호화한다.
  • 클라이언트는 비밀키(대칭키)를 생성하고 서버의 공개키로 비밀키를 암호화하여 서버로 전송한다.
  • 서버는 자신의 개인키로 클라이언트가 보낸 자신의 공개키를 복호화하여 클라이언트의 비밀키를 얻게 된다.
  • 이후의 통신은 공유하고 있는 비밀키로 암호화되어 통신한다.

 

 

 

 

참고 : 

http://www.ktword.co.kr/test/view/view.php?m_temp1=1957 

https://aws.amazon.com/ko/what-is/ssl-certificate/

https://hanjungv.github.io/2017-11-07-1_CS_SSL/

 

728x90