HTTP, HTTPS와 SSL 인증서

CrackCo·2021년 4월 27일
0

대부분의 사이트가 https로 시작하는데 httpshttp의 차이가 무엇일까?

웹 페이지는 누구나 브라우저를 통해 손쉽고 접근하고 데이터 통신하여 여러 서비스를 이용할 수 있다. 반면, 쉽다는 것은 보안에 취약할 수 있다는 얘기일 수 있다.
웹 개발자로서 사용자가 웹 서비스를 안전하게 이용할 수 있도록 보안에 대해 고민해야 하는 것은 필수적이다. 그 첫 번째 웹 통신 보안이 적용된 https 통신과 SSL 인증서에 대해서 알아보았다.

HTTP와 HTTPS

HTTPS는 보안이 적용된다고는 하는데 HTTPSHTTP와 어떠한 점이 다를까?

HTTP

HTTP 통신은 우리가 익히 알고 있듯이 80 포트를 기본으로 통신하는 프로토콜이다. 데이터 송수신 시 암호화하지 않기 때문에 보안 취약점이 존재한다.

HTTPS

HTTP 프로토콜에 SSL 디지털 인증서를 레이어하여 통신하는 프로토콜이다. 80 포트가 아닌 443 포트를 사용하며 데이터 송수신 시 암호화되어 보안상 더욱 안전하다.
또, 구글 등의 검색 엔진이 대부분 HTTPS 프로토콜이 적용된 페이지를 우선 순위로 노출시키기 때문에 SEO에도 유리하다.

그럼 HTTP에 같이 포함하게 되는 SSL 디지털 인증서는 무엇이며 어떻게 동작하기에 보안을 강화할 수 있는 것일까?

SSL(TSL)

SSL은 공인된 3자 업체에서 보증하는 디지털 인증서이다. HTTP 프로토콜 사이에 이 인증서를 토대로 보안이 추가된 HTTPS 통신을 하게 된다.

그럼 SSL을 적용하여 통신이 어떻게 동작하는 것일까?

HTTPS 통신 동작

먼저 SSL이 적용된 HTTPS 통신에 대해 알아보기 전에 사용되는 암호화 개념은 아래와 같다.

  • 대칭 키 방식
    하나의 키로 암호화와 복호화 모두를 수행하는 방식. AES 암호화가 대표적
  • 비대칭 키 방식
    두 개의 키로 각각 암호화와 복호화 역할을 수행하는 방식으로 자신이 갖고 있는 키는 비밀키, 공유하는 키를 공개키라고 한다. RSA 암호화가 대표적

HTTPS 통신은 위의 방식 두 가지를 적용한 하이브리드 방식으로 통신하여 보안성을 지킨다.

  1. 웹 서버는 사이트의 정보와 공개키를 인증 기관의 비밀키로 암호화하여 인증서를 제작하고 발급한다.
  2. 클라이언트는 사이트 접속 요청 시 인증 기관의 공개키를 받고 웹 서버에서 전달 받은 인증서를 해당 공개키로 검증한다.
  3. 검증을 통해 사이트 정보와 웹 서버의 공개키를 얻게 된다.
  4. 클라이언트는 암호화에 사용할 대칭키를 생성하고 대칭키를 공개키로 암호화하여 웹 서버에 전달한다.
  5. 웹 서버는 비밀키로 암호화된 대칭키를 복호화하여 클라이언트의 대칭키를 얻는다.
  6. 웹 서버와 클라이언트는 대칭키를 통해서 데이터를 암호화, 복호화하여 통신한다.

글을 쓰면서

사용자의 입장에서 개발자가 아무리 좋은 서비스를 개발하여 제공한다고 하여도 신뢰할 수 있어야 사용한다. 신뢰의 기본인 보안에 대해 첫 번째로 HTTPSSSL에 대해서 알아보았다. 모두가 적용하기 때문에 나도 적용하는 것보다 그 이전에 왜 사용하는지, 동작 방식이 어떻게 되는지 궁금해하는 개발자가 되어야겠다.

profile
개발이 좋아서 개발자가 됐다.

0개의 댓글