HTTP와 HTTPS 알아보기

sebinnnnn·2023년 5월 8일
0
post-thumbnail

1️⃣ HTTP란?

HTTP(Hyper Text Transfer Protocol)은 서버와 클라이언트 간 정보 즉, 데이터를 주고받는 프로토콜(정보를 주고받는 규칙 체계)이다.
HTTP는 팀 버너스 리에 의해서 1989년에 처음 설계가 되었으며 WWW 기반에서 세계적인 정보를 공유하는데 큰 역할을 했다.

HTTP의 가장 큰 특징이자 단점은 암호화하지 않는 데이터를 전송한다는 점이다. 즉, HTTP는 암호화되지 않은 평문 데이터를 전송하는 프로토콜이기 때문에 제3자가 네트워크 신호를 가로챈다면, HTTP 내용이 그대로 노출이 되는 것이다.

보편적으로 HTTP가 많이 사용되었고 또 현재도 종종 사용이 되고 있으며 소규모 프로젝트의 경우에는 큰 문제가 없을 수 있겠지만, 만약 개인정보 및 금융 정보와 같은 중요 데이터를 취급하는 대규모의 서비스라면 정보 노출에 있어 큰 이슈가 발생할 수 있다.

이러한 허점을 가지고 있는 HTTP를 보완하고 보안 측면의 문제를 해결하기 위해 등장한 것이 HTTPS다.


2️⃣ HTTPS란?

앞서 언급했듯이 HTTPSHTTP의 보안적 측면을 해결하기 위해 등장한 프로토콜이다.

처음 등장했을 때는 보편적으로 사용되지 않았지만, 구글에서 2014년 HTTPS 사용을 권고하고 HTTPS를 적용한 사이트에 대해서 SEO(검색 엔진 최적화) 가산점을 주겠다고 하면서 많이 사용하게 되었고 요즘은 대부분의 사이트가 HTTPS를 적용하고 있다.

🔗 HTTPS에 대해 알아보기

HTTPS(Hyper Text Transfer Protocol Secure)는 HTTP의 보안적 단점을 해결하기 위해 등장한 프로토콜로 HTTP에 데이터 암호화가 추가된 개념이다.

HTTP와는 달리, 중간에 제3자가 정보를 볼 수 없도록 암호화를 지원하고 있다.

(👆🏻 위 이미지와 같이 도메인 이름 앞에 좌물쇠 모양이 있다면, 이는 HTTPS가 적용되었다는 걸 의미한다.)

기존 HTTP는 전송계층에서 동작했다면 HTTPS는 SSL이라는 보안계층이 전송계층 위에 올라가는 형태로 동작을 한다. 즉, SSL 위에 HTTP를 얹어서 보안이 지원된 상태로 동작하게 되는 것이다. 이러한 동작 방식을 SSL 암호화 통신이라고도 부른다.
(다만,SSL은 보안 취약점이 발견되어 보안성이 떨어졌기 때문에 TLS가 SSL을 대체하게 되었고 TLS 사용을 권장하고 있다.)

HTTPS는 키 암호화 방식으로 동작을 하게 되고 대칭키 암호화 방식과 비대칭키 암호화 방식을 모두 사용하고 있다.
대칭키 암호화 방식은 서버와 클라이언트가 동일한 키를 통해 암호화와 복호화를 진행하는 것이고 비대칭키 암호화 방식은 대칭키와는 다르게 1개의 쌍으로 구성이 된 공개키와 개인키를 암호화 및 복호화 하는데 사용되는 것이다.
즉, 대칭키는 1개의 키로 진행되고 비대칭키는 2개의 키로 진행된다고 생각하면 될 것 같다.

🔗 HTTP와 HTTPS의 차이점

계속해서 살펴보듯이, HTTP와 HTTPS의 가장 큰 차이점은 암호화의 유무다.

HTTP는 통신 과정에 있어서 암호화와 같은 별다른 보안 조치를 취하지 않고 데이터가 전송된다면, HTTPS는 HTTP의 보안 측면의 이슈를 막기 위해서 암호화 방식을 통해 데이터를 보호한 상태로 전송되는 것이다.

HTTPS의 경우에는 암호화와 복호화 과정이 필수적이기 때문에 HTTP와 비교했을 때 비교적 속도가 느리다는 단점이 있지만, 이 점의 경우 오늘날에는 거의 차이를 느끼지 못하는 정도라고 한다.

그럼에도, HTTPS는 암호화와 복호화 과정이 있기 때문에 만약에 소규모 프로젝트나 민감한 정보가 아닌 노출되어도 괜찮은 단순 데이터를 취급하는 서비스의 경우 HTTP를 이용해도 괜찮다.
그러나, 민감한 개인정보를 취급하는 서비스라면 반드시 HTTPS를 사용해서 데이터를 철저하게 보호해야 한다.


3️⃣ HTTPS를 이용하려면?

HTTPS는 암호화 방식으로 데이터가 전송되기 때문에 인증기관(CA)에서 해당 사이트의 소유자가 누구인지, 누가 만든 것인지 등의 정보를 인증해 주고 이러한 인증기관의 인증으로 안전한 사이트에 접속을 하게 된다.
즉, HTTPS가 적용된 웹 사이트는 신뢰를 구축하기 위해서 정보를 교환하기 전에 브라우저와 인증서를 공유하게 되고 이러한 인증서는 암호화 정보도 함께 포함하고 있어 서버와 클라이언트는 암호화된 데이터를 교환할 수 있게 되는 것이다.

따라서, HTTPS를 이용하기 위해서는 SSL/TLS 프로토콜을 사용해야 하고, 이 프로토콜에서는 SSL/TLS 인증서가 사용된다.
해당 인증서를 사용하기 위해서는 공인된 CA에서 발급을 받아야 한다.

[ HTTPS의 동작 과정 ]

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

👉🏻 내용 출처 https://aws.amazon.com/ko/compare/the-difference-between-https-and-http/

SSL/TLS 인증서는 해당 인증서를 발급해 주는 전문적인 인증기관(CA)에서 발급을 받을 수 있고 이외에도 여러 무료/유료 기관이 있기 때문에 적합한 인증기관을 선택해서 인증서를 발급받으면 된다.

과거에는 대부분의 인증 기관이 인증서를 등록하고 유지 관리하는 데 있어서 요금을 청구했지만 오늘날 많은 무료 인증 기관이 있기 때문에 따로 요금을 내지 않고도 SSL 인증서를 획득할 수 있다.

HTTPS 설정에 있어서 인증서를 발급받는 것에서 끝나는 것이 아니라 실제 사용되는 서버와 인증서를 연결해 주는 과정이 별도로 필요하다.

서버와의 연결 과정은 실습을 통해서 설명하는 것이 효율적이기 때문에 해당 글에서는 따로 다루지 않고, 만약 HTTPS를 설정해야 하는 때가 온다면 그때 따로 정리해서 블로그에 업로드해 보려고 한다.


참고 사이트

https://mangkyu.tistory.com/98

https://devjem.tistory.com/3

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

https://inpa.tistory.com/entry/TOMCAT-%E2%9A%99%EF%B8%8F-SSL-%EC%84%A4%EC%A0%95-https

profile
🏠 블로그 이전 중 → https://medium.com/@sebinndev

0개의 댓글