HTTPS 통신 과정

신동수·2024년 3월 6일
0

Server

목록 보기
8/9

SSL 통신과정
위 링크에서 그림으로 HTTPS 의 통신 과정을 잘 설명을 하여 공유하고자 한다.


아마 학부생 때 네트워크 기본을 배웠다면 위 와 같은 그림을 많이 보았을 것이다.
이론적인 부분을 많이 배우는 거라 실제 어떻게 통신이 되는 것이지 잘 몰랐다..... 아래에 관련하여 정리 하였으니 천천히 읽어 준다면 이해하는데 도움이 될 것이다.

HTTPS 프로토콜

HTTP와 HTTPS의 차이점은 무엇인가요?
위 링크에서 따온 내용의 부분으로 아래와 같이 설명을 하고 있다. 이전 위 그림으로 설명하는 통신 과정을 본다면 이해를 하는데 도움이 될 것이다.

HTTP는 암호화되지 않은 데이터를 전송합니다. 즉, 브라우저에서 전송된 정보를 제3자가 가로채고 읽을 수 있습니다. 이는 이상적인 프로세스가 아니었기 때문에, 통신에 또 다른 보안 계층을 추가하기 위해 HTTPS로 확장되었습니다. HTTPS는 HTTP 요청 및 응답을 SSL 및 TLS 기술에 결합합니다.

HTTPS 웹 사이트는 독립된 인증 기관(CA)에서 SSL/TLS 인증서를 획득해야 합니다. 이러한 웹 사이트는 신뢰를 구축하기 위해 데이터를 교환하기 전에 브라우저와 인증서를 공유합니다. SSL 인증서는 암호화 정보도 포함하므로 서버와 웹 브라우저는 암호화된 데이터나 스크램블된 데이터를 교환할 수 있습니다. 프로세스는 다음과 같이 작동합니다.

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

간단 정리

조금 더 간단한 정리를 위해서 순서를 작성 하였다.

AWS 를 기준으로 그림에 대하여 설명을 추가하자면 Client 는 출발지이 될 것이며, CA 는 AWS Certificate Manager 이고, Server 는 통신을 하기 위한 목적지이다.

  1. 클라이언트가 서버로 최초 연결을 시도를 한다.
  2. 서버는 공개키를 클라이언트로 넘겨준다.
  3. 클라이언트는 인증서의 유효성을 CA 를 통해 검사하고 세션키를 발급한다.
  4. 클라이언트는 서버의 공개키로 세션키를 암호화하여 서버로 전송한다.
  5. 서버는 암호화된 세션키를 개인키로 복호화하여 세션키를 얻는다.
  6. 클라이언트와 서버는 동일한 세션키를 공유하므로 데이터를 전달할 때 세션키로 암호화 및 복호화를 진행한다.

AWS 에서 HTTPS 통신 방법

1. Amazon Cloudfront 를 이용하는 방식

  • 클라이언트가 Route53 에 등록된 Cloudfront 의 대체도메인을 통해 통신하고, Cloudfront 와 서버(EC2 or ALB) 나 S3 를 통해 통신하는 방법이다.
  • HTTPS 인증서는 ACM(AWS Certificate Manager)에서 제공한다.
  • Cloudfront 를 사용하려면 미국 동부 버지니아 북부(us-east-1) 에 ACM 이 존재해야 한다.

2. ELB 를 이용하는 방식

  • 클라이언트가 Route53 에 등록된 ALB DNS 를 통해 통신하고 ELB 와 서버(EC2)와 통신을 하는 방법이다.
  • ELB 에 인증서를 적용하려면 ELB 가 존재하는 리전에 ACM 이 있어야 한다.
profile
조금씩 성장하는 DevOps 엔지니어가 되겠습니다. 😄

0개의 댓글