[aws] https 적용기 3탄 : HTTPS 진행하면서 알아야 하는 개념 정리@
Categories: cloud
📌 개인적인 공간으로 공부를 기록하고 복습하기 위해 사용하는 블로그입니다.
정확하지 않은 정보가 있을 수 있으니 참고바랍니다 :😸
[틀린 내용은 댓글로 남겨주시면 복받으실거에요]
HTTPS 진행하면서 알아야 하는 개념 정리@
HTTPS란?
HTTPS는 HTTP에 SSL/TLS 프로토콜을 결합하여 데이터를 안전하게 전송하는 보안 통신 프로토콜이다
HTTP와 HTTPS의 차이
- HTTP (Hypertext Transfer Protocol)
- 데이터를 평문으로 전송 → 도청, 변조, 피싱에 취약.
- 보안이 필요 없는 일반적인 요청에서 사용.
- HTTPS (HTTP Secure)
- SSL/TLS 프로토콜을 사용하여 데이터를 암호화하여 전송 - 보안을 강화.
- 클라이언트와 서버 간 통신 보호:
- 데이터 암호화
- 무결성 (데이터 변조 방지)
- 인증 (서버 신뢰 보장)
HTTPS를 적용하기 위해 필요한 핵심 요소
- SSL/TLS 인증서
- SSL/TLS 인증서는 클라이언트(사용자의 브라우저)와 서버 간 안전한 연결을 보장
- 인증서는 신뢰할 수 있는 CA(Certificate Authority)에서 발급
- AWS에서는 AWS Certificate Manager (ACM)을 사용해 인증서를 무료로 발급받을 수 있다.
- 도메인
- SSL 인증서를 적용하려면 고유한 도메인이 필요
- 예:
example.com
,www.example.com
- Route 53을 통해 도메인 관리와 트래픽 라우팅 가능
로드밸런서 (Elastic Load Balancer)
- 역할
- 클라이언트의 요청을 여러 EC2 인스턴스로 분산 처리
- HTTPS 통신을 처리하여 보안을 강화
- 추가 기능
- 헬스 체크: EC2 상태를 모니터링하고, 비정상 상태의 서버를 제외.
CloudFront
- AWS의 CDN(Content Delivery Network) 서비스
- CDN은 인터넷 사용자가 더 빠르게 웹 콘텐츠를 다운로드하거나 사용할 수 있도록 전 세계에 분산된 서버 네트워크를 활용하는 기술
- 전 세계에 분산된 서버를 통해 콘텐츠를 빠르게 제공
- HTTPS를 적용하여 클라이언트와 CloudFront 간 통신을 암호화
CloudFront의 주요 역할
- 정적 콘텐츠 처리
- S3 버킷에 저장된 정적 파일을 캐싱해 제공
- 동적 요청 처리
- 로드밸런서를 통해 EC2 인스턴스로 API 요청 전달
- HTTPS 통신 보장
- 인증서를 사용해 사용자와의 통신을 안전하게 암호화
HTTPS 적용 흐름
도메인 구매 및 Route 53 설정
- 도메인 구매
- 도메인은 인터넷상의 고유한 주소
- 도메인 등록 대행사(예: 가비아, AWS Route 53)에서 도메인을 구매
- Route 53 호스팅 영역 생성
- Route53은 AWS의 DNS 서비스로, 도메인 이름을 서버(IP 주소)와 연결해주는 역할을 한다.
- 도메인 이름을 AWS 리소스(S3, CloudFront, 로드밸런서 등)에 연결
📌 네임서버
구매한 도메인의 네임서버를 Route53의 네임서버로 변경하면, 도메인 관리를 AWS에서 할 수 있다.
SSL/TLS 인증서 발급 (ACM)
- AWS ACM (AWS Certificate Manager)**를 통해 인증서를 발급
-
CloudFront 인증서 발급 시 유의점
📌 북버지니아 리전
CloudFront에서 인증서를 사용하려면 반드시 북버지니아 리전에서 발급해야 한다.
- 인증서가 하는 역할
- 클라이언트가 접속한 서버가 신뢰할 수 있는 서버임을 보장
- 클라이언트-서버 간 데이터를 암호화
- ACM을 사용하는 이유
- AWS Certificate Manager는 SSL 인증서를 무료로 제공
- 도메인 소유권을 확인하고, 인증서를 자동으로 갱신
CloudFront와 HTTPS
CloudFront의 역할
- 클라이언트와 서버 사이에 CDN 역할을 해서 정적 파일 제공 속도를 높인다.
- HTTPS 인증서를 적용해 클라이언트와 CloudFront 간의 안전한 연결을 보장
CloudFront 설정
- 오리진 (CloudFront가 데이터를 가져오는 원본 서버)
- CloudFront는 사용자 요청을 받고, 콘텐츠를 제공하기 위해 오리진 서버에서 데이터를 가져
- 정적 콘텐츠는 S3 버킷에 저장되어 있음
- 동적 콘텐츠는 EC2 인스턴스에서 처리, CloudFront는 이러한 요청을 로드밸런서를 통해 EC2 서버로 전달.
- CloudFront는 사용자 요청을 받고, 콘텐츠를 제공하기 위해 오리진 서버에서 데이터를 가져
- 뷰어 프로토콜 정책 : 사용자가 CloudFront에 요청할 때 사용할 프로토콜(HTTP/HTTPS)을 결정하는 설정
- Redirect HTTP to HTTPS : HTTP 요청을 HTTPS로 리다이렉트 → 보안 연결(TLS/SSL)을 강제
- HTTPS Only : CloudFront가 HTTPS 요청만 허용. HTTP 요청은 차단.
-
대체 도메인(CNAME)
CloudFront의 기본 도메인 대신,
example.com
같은 커스텀 도메인을 사용하기 위해 설정한다.
📌 정리
사용자 → 커스텀 도메인(example.com)
사용자는
example.com
을 입력.Route 53 → CloudFront
DNS(Route 53)가 사용자 요청을 CloudFront로 전달.
CloudFront → 오리진(S3, EC2)
CloudFront가 오리진에서 콘텐츠를 가져와 사용자에게 제공.
로드밸런서 (EC2와 HTTPS)
로드밸런서의 역할
- EC2 서버에 대한 트래픽을 분산 처리
- 클라이언트와 EC2 간의 HTTPS 통신을 보장
로드밸런서 설정
- 리스너:
- HTTP 요청을 받아 HTTPS로 리다이렉트
- HTTPS 요청은 EC2로 전달
- 인증서 등록: 로드밸런서에서 HTTPS를 활성화하려면 ACM 인증서를 등록해야 한다.
📌 Health Check
로드밸런서가 EC2 서버의 상태를 확인하는 기능 서버가 정상 동작하지 않으면 요청을 다른 서버로 전달한다.
- 사용 이유 : EC2 서버가 다운되었을 때, 로드밸런서가 자동으로 트래픽을 다른 서버로 분산하기 위함.
HTTPS와 AWS 리소스 통합
- CloudFront와 로드밸런서 통합
- CloudFront는 전역적으로 요청을 분산 처리
- 로드밸런서는 특정 지역의 EC2로 트래픽을 전달
- 요청 처리 흐름:
- 클라이언트 → CloudFront → 로드밸런서 → EC2 인스턴스
- 캐싱과 트래픽 최적화
- CloudFront는 정적 파일을 캐싱하여 로드밸런서 부하를 줄임
HTTPS 적용의 이점
1) 보안 강화
- 데이터 암호화로 도청과 변조 방지.
- SSL/TLS 인증서를 통해 신뢰할 수 있는 서버를 증명.
2) 성능 최적화
- CloudFront는 캐시와 분산된 CDN 서버를 활용해 콘텐츠 제공 속도 향상.
- 로드밸런서는 서버 부하를 분산 처리.
3) 확장성
- 로드밸런서를 통해 트래픽 증가에도 안정적인 서비스 제공.
- CloudFront로 전 세계 사용자를 대상으로 빠른 콘텐츠 전달.
4) 유지보수 편리성
- S3, 로드밸런서, CloudFront로 역할 분리:
- S3: 정적 파일 저장.
- 로드밸런서: 트래픽 분산.
- CloudFront: CDN 및 HTTPS 처리.
- 로드밸런서: EC2 서버 간 트래픽 분산 및 HTTPS 처리
- CloudFront: 전 세계 CDN 역할 및 HTTPS 처리
- Route 53 : 도메인 이름을 IP 주소로 변환하고, 트래픽을 올바른 AWS 리소스에 라우팅하는 DNS 서비스 HTTPS를 적용하면 보안, 성능, 확장성, 유지보수 측면에서 큰 이점을 얻을 수 있고 AWS의 다양한 서비스(S3, CloudFront, 로드밸런서)를 적절히 활용하면 HTTPS 구현이 더 쉬워지고 효과적이다.
Leave a comment