CS

[CS] HTTP, HTTPS의 개념과 차이점에 대해 알아보자

SeungbeomKim 2023. 12. 1. 22:15

평소 HTTP와 HTTPS의 차이를 HTTPS = HTTP + Security 정도로만 파악하고 있었는데, 이번에 확실하게 개념 정리를 하려고 합니다. 이들이 무엇이고 왜 사용하는지와 둘의 차이점에 대해 알아보겠습니다.

HTTP, HTTPS IMAGE
이미지 참조 : https://www.cloudflare.com/ko-kr/learning/ssl/what-is-ssl/

 

HTTP(Hypertext Transfer Protocol)

  • 클라이언트와 서버 간 통신을 위한 통신 규칙 세트 또는 프로토콜
  • 사용자가 웹 사이트를 방문하면, 사용자 브라우저가 웹 서버에 HTTP 요청을 전송하고, 웹 서버는 클라이언트 요청에 대해 HTTP 응답을 합니다. 
  • 웹 서버와 사용자 브라우저는 데이터를 일반 텍스트로 교환하기에 HTTP 프로토콜은 네트워크 연결을 작동하게 하는 기본 기술입니다.

 

클라이언트 요청에 대한 성공 응답은 200(OK), 201(Created) 등으로 구성되고, 실패 응답은 400(Bad Request), 404(Not Found), 500(Internal Server Error) 등으로 구성됩니다.

 

이 외에도 다양한 HTTP 상태 코드가 있는데 WIKIPEDIA를 참고하면 좋을 것 같습니다.

https://ko.wikipedia.org/wiki/HTTP_%EC%83%81%ED%83%9C_%EC%BD%94%EB%93%9C

 

HTTPS(Hypertext Transfer Protocol Secure)

  • 브라우저와 서버가 데이터를 전송하기 전, 안전하고 암호화된 연결을 설정하기에 HTTP의 확장 버전 또는 더 안전한 버전입니다. 

 

이제 HTTPS를 적용해야 하는 이유를 설명드리도록 하겠습니다.

 

HTTP는 암호화되지 않은 데이터를 전송하기에 브라우저에서 전송된 정보를 제3자가 가로챌 수 있다는 단점이 있습니다. HTTPS는 HTTP 요청 및 응답을 SSL 및 TLS 기술에 결합하여 암호화된 데이터를 전송합니다. 

 

SSL/TLS 

  • SSL: 웹 사이트와 브라우저 사이에 전송되는 데이터를 암호화하여 인터넷 연결을 보호하기 위한 표준 기술
  • TLS: SSL의 발전된 버전

즉, HTTPS는 HTTP에 SSL/TLS를 결합한 프로토콜로 보시면 될 것 같습니다.

 

HTTPS 웹 사이트는 독립된 인증 기관(CA)에서 SSL/TLS 인증서를 획득해야 합니다. 이러한 웹 사이트는 신뢰를 구축하기 위해 데이터를 교환하기 전에 브라우저와 인증서를 공유하게 됩니다. 이번 프로젝트에도 도입을 해야 하는데 저는 배포 서버에 Nginx를 따로 구축해  Let's Encrypt 인증서를 적용하려고 합니다.

 

이 외에도 무료 인증서를 획득할 수 있는 기관이 매우 많습니다.

  • ACM(AWS Certificate Manager)
  • Sectigo
  • GlobalSign
  • Digicert

 

SSL 인증서는 암호화 정보도 포함하므로 서버와 웹 브라우저는 암호화된 데이터나 스크램블(데이터베이스에 문자나 숫자를 재구성하여 데이터를 보호하는 것)된 데이터를 교환할 수 있습니다. 

 

HTTPS 프로세스

  1. 사용자 브라우저의 주소 표시줄에 https://URL 형식을 입력하여 HTTPS 웹사이트 방문
  2. 브라우저는 서버의 SSL 인증서를 요청하여 사이트의 신뢰성을 검증하려고 시도
  3. 서버는 Public Key가 포함된 SSL 인증서를 회신으로 전송
  4. 웹 사이트의 SSL 인증서는 서버 아이덴티티를 증명합니다. 브라우저에서 인증되면, 브라우저가 Public Key를 사용하여 비밀 세션 키가 포함된 메세지를 암호화하고 전송
  5. 웹 서버는 Private Key를 사용하여 메세지를 해독하고 세션 키를 검색합니다. 이후 세션 키를 암호화하고 브라우저에 승인 메세지를 전송
  6. 브라우저와 웹 서버 모두 동일한 세션 키를 사용하여 메세지를 안전하게 교환

HTTP/1.1, HTTP/2, HTTP/3, HTTPS

  • HTTP/1.1: 1996~1997년 출시된 최초 HTTP 버전
  • HTTP/2: 텍스트 형식 대신, 바이너리 데이터를 교환하기에 서버가 새 HTTP 요청을 기다리는 대신에 클라이언트 캐시에 응답을 사전에 전송할 수 있게 된 버전
  • HTTP/3: 실시간 스트리밍 및 기타 최신 데이터 전송 요구사항을 보다 효율적으로 지원하는 버전
  • HTTPS: HTTP에서 데이터 보안 문제를 우선시하고, 최신 시스템에서는 SSL/TLS + HTTP/2 형태를 많이 사용

HTTP, HTTPS 비교

  HTTP HTTPS
의미 Hypertext Transfer Protocol Hypertext Transfer Protocol Secure
기본 프로토콜 HTTP/1, HTTP/2: TCP/IP 
HTTP/3: QUIC 
SSL/TLS + HTTP/2
포트 80 443
용도 이전 텍스트 기반 웹 사이트 모든 최신 웹 사이트
보안 추가 보안 기능 없음 퍼블릭 키 암호화에 SSL 인증서 사용
이점 인터넷을 통한 통신 지원 웹 사이트에 대한 권위, 신뢰성 및 검색 엔진 순위 검색

 

HTTP, HTTPS의 개념과 차이점에 대해 알아보았고, HTTPS를 적용해야 하는 이유에 대해서도 숙지할 수 있게 되었습니다. 다음 포스팅에서는 캡스톤 프로젝트 배포 서버에 Nginx를 구축하고 Let's Encrypt 인증서를 통한 https 적용하는 과정에 대해 상세하게 포스팅하도록 하겠습니다. 

 

 

<참고 자료>

https://aws.amazon.com/ko/compare/the-difference-between-https-and-http/

 

HTTP와 HTTPS 비교 - 전송 프로토콜 간의 차이점 - AWS

1996~1997년에 출시된 최초의 HTTP 버전이 HTTP/1.1입니다. HTTP/2와 HTTP/3은 프로토콜 자체를 업그레이드한 버전입니다. 데이터 전송 시스템을 수정하면서 효율성을 개선했습니다. 예를 들어, HTTP/2는 텍

aws.amazon.com

https://aws.amazon.com/ko/compare/the-difference-between-ssl-and-tls/

 

SSL과 TLS 비교 - 통신 프로토콜 간의 차이점 - AWS

SSL과 TLS 모두 서버, 애플리케이션, 사용자 및 시스템 간의 데이터를 암호화하는 통신 프로토콜입니다. 네트워크를 통해 연결된 두 당사자를 인증하므로 데이터를 안전하게 교환할 수 있습니다.

aws.amazon.com