본문으로 건너뛰기

HTTPS

HTTPS(Hypertext Transfer Protocol Secure)는 HTTP에 데이터 암호화가 추가된 프로토콜이다.

🧑🏻‍💻 HTTPS 동작 방식


HTTPS는 데이터의 암호화 보안성을 제공하기 위해 SSL(보안 소켓 계층) 또는 TLS(전송 계층 보안) 프로토콜을 사용하며 HTTPS 웹 사이트는 독립된 인증 기관(CA)에서 SSL/TLS 인증서를 획득해야 한다.

  1. 사용자가 HTTPS 웹 사이트를 방문한다.
  2. 브라우저는 서버의 SSL 인증서를 요청하여 사이트의 신뢰성을 검증하려고 시도한다.
  3. 서버는 퍼블릭 키가 포함된 SSL 인증서를 회신으로 전송한다.
  4. 웹 사이트의 SSL 인증서는 서버 아이덴티티를 증명합니다. 브라우저에서 인증되면, 브라우저가 퍼블릭 키를 사용하여 비밀 세션 키가 포함된 메시지를 암호화하고 전송한다.
  5. 웹 서버는 개인 키를 사용하여 메시지를 해독하고 세션 키를 검색한다. 그런 다음, 세션 키를 암호화하고 브라우저에 승인 메시지를 전송한다.
  6. 이제 브라우저와 웹 서버 모두 동일한 세션 키를 사용하여 메시지를 안전하게 교환하도록 전환한다.

✅ SSL Handshake

클라이언트와 서버가 암호화된 데이터를 교환하기 위한 협상 과정

  1. 클라이언트는 서버에 연결을 요청하고 SSL/TLS 핸드셰이크를 시작하기 위해 "Client Hello" 메시지를 보낸다. 이 메시지에는 클라이언트가 지원하는 암호화 알고리즘 목록과 랜덤 데이터가 포함된다.
  2. 서버는 클라이언트의 "Client Hello" 메시지를 받은 후, 지원 가능한 암호화 알고리즘 중 하나를 선택하고, 랜덤 데이터와 서버 인증서를 포함한 "Server Hello" 메시지를 클라이언트로 보낸다. 서버 인증서에는 서버의 공개 키와 서버 정보가 포함되어 있다.
  3. 서버가 클라이언트에게 요청할 경우, 클라이언트는 자체 인증서와 공개 키를 서버로 보낸다.
  4. 클라이언트와 서버 모두 핸드셰이크 중에 사용할 세션 키를 생성한다. 이 세션 키는 데이터 암호화에 사용된다.
  5. 클라이언트와 서버는 핸드셰이크가 완료되었음을 나타내는 메시지를 교환한다. 이제 암호화 통신이 설정되었으며, 클라이언트와 서버는 암호화된 데이터를 주고받을 수 있다.
  6. 암호화된 세션 키를 사용하여 클라이언트와 서버 간의 모든 데이터 전송이 암호화된다.

🧑🏻‍💻 HTTP보다 HTTPS를 선택하는 이유


✏️ 보안

HTTP 메시지는 일반 텍스트이므로, 권한이 없는 당사자가 인터넷을 통해 쉽게 액세스하고 읽을 수 있다. 반면, HTTPS는 모든 데이터를 암호화된 형태로 전송한다. 사용자가 민감한 데이터를 제출할 때 제 3자가 네트워크를 통해 해당 데이터를 가로챌 수 없다.

✏️ 검색엔진 최적화(SEO)

검색 엔진은 HTTP의 신뢰성이 더 낮기 때문에 보통 HTTP 웹 사이트 콘텐츠의 순위를 HTTPS 웹 페이지보다 낮게 지정한다. 사용자도 HTTP보다 HTTPS 웹 사이트를 더 선호한다.

✏️ 성능 및 분석

HTTPS 웹 애플리케이션은 HTTP 애플리케이션보다 로드 속도가 더 빠르다. 마찬가지로, HTTPS는 참조 링크도 더 잘 추적한다.

HTTPHTTPS
의미Hypertext Transfer ProtocolHypertext Transfer Protocol Secure
기본 프로토콜HTTP/1과 HTTP/2는 TCP/IP를 사용합니다. HTTP/3은 QUIC 프로토콜을 사용합니다.HTTP 요청 및 응답을 추가로 암호화하기 위해 SSL/TLS와 함께 HTTP/2 사용
포트기본 포트 80기본 포트 443
용도이전 텍스트 기반 웹 사이트모든 최신 웹 사이트
보안추가 보안 기능 없음퍼블릭 키 암호화에 SSL 인증서 사용
이점인터넷을 통한 통신 지원웹 사이트에 대한 권위, 신뢰성 및 검색 엔진 순위 개선

참고
https://mangkyu.tistory.com/98
https://aws.amazon.com/ko/compare/the-difference-between-https-and-http/