인프런 커뮤니티 질문&답변
CloudFront 질문 있습니다
해결된 질문
작성
·
85
0
안녕하세요, 강의 잘 보고 있는 학생입니다.
다름이 아니라 서버 배포 관련해서 궁금한 점이 있어 문의드립니다.
현재 저는 EC2 인스턴스에 Java Spring, MySQL, Redis를 Docker로 구성하여 서버를 구축해둔 상태입니다. 그리고 Nginx를 이용해 리버스 프록시 및 HTTPS 설정까지 완료한 상황입니다.
이제 프론트엔드 웹 애플리케이션을 AWS S3 + CloudFront를 통해 배포하려고 합니다.
이와 관련해서 궁금한 점이 있습니다.
CloudFront에서도 HTTPS를 사용하려면 SSL/TLS 인증서(ACM)를 새로 발급받아야 하는데,
이미 EC2(Nginx) 쪽에서 HTTPS를 위해 인증서를 설정한 상태라,
이처럼 인증서를 각각(중복으로) 발급받아 사용하는 것이 맞는 건지,
그리고 전체적인 연결 구조 흐름이 정확히 어떻게 되는지 잘 이해가 되지 않아 질문드립니다.
혹시 이 부분에 대해 설명을 부탁드릴 수 있을까요?
감사합니다.
답변 2
0
안녕하세요 ! 강의 잘 봐주셔서 정말 감사합니다ㅎㅎ
질문해주신 EC2 + S3 + CloudFront + HTTPS 인증서 구성 흐름에 대해 설명드려볼게요 !
"EC2 쪽에서는 이미 Nginx + HTTPS 구성이 되어 있는데, S3 정적 웹사이트 배포를 위해 CloudFront에서도 SSL 인증서(ACM)를 또 발급받아야 하나요 ?"
-> 네 맞습니다 ! CloudFront를 통해 S3 웹사이트에 HTTPS를 적용하려면, CloudFront 전용으로 별도로 ACM 인증서가 필요해요 ~
"전체적인 연결 구조 흐름에 대해 설명을 듣고싶습니다."
-> 우선 백엔드에서 아래와 같은 부분은 이미 EC2에서 Nginx + SSL 인증서 적용 완료하신 대로 잘 되어 있습니다!
[사용자 브라우저] -> [https://api.example.com] -> [Nginx (HTTPS)] -> [Spring / Docker] 프론트엔드 (S3 + CloudFront)는 아래와 같은 구조를 가지게 되요 ~
[사용자 브라우저] -> [https://www.example.com] -> [CloudFront (HTTPS)] -> [S3 정적 웹사이트]여기서 중요한 건, CloudFront는 S3 앞단의 프록시 역할을 하기 때문에,
사용자가 보게 될 HTTPS 연결은 CloudFront에서 처리하게 되요 ~
그래서 CloudFront에서 사용할 ACM 인증서를 꼭 발급받아야 해요 !
더 궁금하신 점 있으시면 언제든지 질문 남겨주세요😊
0
안녕하세요, 인프런 AI 인턴입니다. blackhole124님.
AWS 인프라 구성을 진행 중이시군요. EC2와 CloudFront를 모두 사용하는 경우의 인증서 적용 방법에 대해 설명드리겠습니다.
CloudFront와 인증서
SSL/TLS 인증서의 발급:
- CloudFront에서 HTTPS를 사용하기 위해서는 AWS Certificate Manager(ACM)를 통해 SSL/TLS 인증서를 발급받아야 합니다. 이는 클라이언트(브라우저)와 CloudFront 간의 요청을 HTTPS로 보장하기 위함입니다.
- 반면, EC2 인스턴스에서의 Nginx에서는 이미 다른 인증서를 사용중이시라면, CloudFront와 EC2 간에는 별도의 SSL/TLS 인증이 필요하지 않을 수 있습니다.
- CloudFront에서 HTTPS를 사용하기 위해서는 AWS Certificate Manager(ACM)를 통해 SSL/TLS 인증서를 발급받아야 합니다. 이는 클라이언트(브라우저)와 CloudFront 간의 요청을 HTTPS로 보장하기 위함입니다.
인증서의 중복 발급:
- 각각의 컴포넌트가 SSL을 사용하도록 독립적으로 설정해야 하므로, ACM으로 CloudFront의 인증서를 별도로 발급받아 사용하세요. 즉, 브라우저부터 CloudFront, 그리고 CloudFront에서 Nginx(EC2)까지의 연결이 암호화(HTTPS)를 지원하므로, 각 구성 요소 간에는 HTTPS 연결이 올바르게 구성되어야 합니다.
- 각각의 컴포넌트가 SSL을 사용하도록 독립적으로 설정해야 하므로, ACM으로 CloudFront의 인증서를 별도로 발급받아 사용하세요. 즉, 브라우저부터 CloudFront, 그리고 CloudFront에서 Nginx(EC2)까지의 연결이 암호화(HTTPS)를 지원하므로, 각 구성 요소 간에는 HTTPS 연결이 올바르게 구성되어야 합니다.
연결 구조 흐름
사용자가 웹사이트에 접근할 경우:
- 사용자의 브라우저는 CloudFront 도메인으로 접근합니다.
- CloudFront는 S3 버킷에 저장된 정적 컨텐츠를 제공하고, HTTPS를 통해 사용자의 브라우저에 해당 컨텐츠를 전송합니다.
- 만약 해당 요청이 API 요청이라면, CloudFront는 Nginx가 운영되고 있는 EC2 인스턴스에 요청을 전달합니다. 이때는 내부적으로 HTTPS가 필요할 수 있으며, 필요시 자체적으로 인증서를 설정할 수 있습니다.
- 사용자의 브라우저는 CloudFront 도메인으로 접근합니다.
전체적인 흐름:
- 사용자의 브라우저 <-> CloudFront (HTTPS)
- CloudFront <-> EC2의 Nginx (HTTP 또는 HTTPS)
- 사용자의 브라우저 <-> CloudFront (HTTPS)
이처럼, 각각의 서비스는 독립적으로 SSL/TLS 인증서를 적용하여 클라이언트의 보안을 강화할 수 있습니다. CloudFront를 통해 프론트엔드를 배포하고, 사용자의 요청 흐름을 최적화하며 성능을 높일 수 있습니다.
더 자세한 설정 예제 및 각 컴포넌트의 배포 사례는 아래의 링크에서 확인해 주세요:
- AWS CloudFront에서 HTTPS 설정하기 - CloudFront와 HTTPS 설정에 대한 내용을 다룹니다.
- Nginx와 SSL 설정 - Nginx에서 SSL을 설정하는 방법을 확인할 수 있습니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.





감사합니다 !