이번 시간에는 이전에 구입한 가비아 도메인을 기반으로 ACM 인증서를 생성하고, 이를 ALB에 연결하는 과정을 진행해본다. ACM(AWS Certificate Manager)은 AWS에서 제공하는 인증서 관리 서비스로, HTTPS 통신을 위한 SSL/TLS 인증서를 발급하고 관리해준다.
01. ACM(AWS Cerificate Manager)?
앞에서 간단히 언급했지만, 이번에는 AWS ACM에 대해 조금 더 자세히 살펴보자. AWS ACM(AWS Certificate Manager)은 SSL/TLS 인증서를 손쉽게 생성하고 관리할 수 있도록 도와주는 서비스이다.
01-1. ACM 주요 특징
[AWS] Certificate Manager (ACM)이란? 쉽게 개념 정리
◇ 공부 기록용으로 작성하였으니 틀린 점, 피드백 주시면 감사하겠습니다 ◇ SAA-C03 문제 예시더보기AWS Certificate Manager (ACM)에 대해 올바르게 설명하고 있는 것은 무엇입니까?AWS에 저장된 데
jibinary.tistory.com
ACM의 주요 특징은 아래와 같다.
1. SSL/TLS 인증서 관리
- AWS에서 SSL/TLS 인증서를 구매할 수 있으며, 개인 소유의 외부 인증서 업로드도 지원
- ACM을 통해 CloudFront, ELB, API Gateway와 같은 서비스에 인증서 연동 지원
- ACM이 자동으로 인증서를 갱신해주기에, 수동으로 갱신할 필요가 없다
2. 높은 가용성 및 보안
- ACM 인증서는 최신 암호화 알고리즘을 지원하여 안전한 데이터 전송 보장
- ACM 인증서는 리전 간 자동 복제되어 고가용성 유지 가능
- 기본적으로는 ACM은 해당 ACM을 생성한 리전 안에만 존재
- 하지만, ACM 복제는 글로벌 서비스 사용 시에만 복제가 된다
ACM은 자동으로 인증서를 갱신해준다고 하였다. 하지만, ACM에서 발급한 인증서(Public)인 경우와, 외부 인증서인 경우 자동 갱신 여부 조건은 다르다. 아래 내용을 확인하자.
3. ACM 발급 인증서(Public 인증서)인 경우
ACM에서 발급한 인증서는 기본적으로 자동 갱신을 지원한다. 다만, 자동 갱신이 되는 조건은 해당 ACM 인증서가 만료되기 전에 ALB, CloudFront, API Gateway 등의 서비스에 연결되어서 실제 사용이 되고 있어야만 자동 갱신이 지원된다.
4. 외부 발급 인증서(Imported 인증서)인 경우
외부에서 발급받는 SSL/TLS 인증서의 경우 AWS에서 자동 갱신을 지원하지 않는다. 그렇기에, 사용자가 직접 해당 인증서를 갱신한 후에 ACM에 다시 업로드하는 과정을 거쳐야 갱신이 가능하다.
ACM이란 무엇이고 특징은 어떤게 있는지 위에서 간략히 알아보았으니, 이제 ACM 인증서를 생성하고 Route53의 호스팅 영역을 생성하고 후에 ALB에 신규로 생성한 ACM 인증서를 연결하는 과정까지 진행 해보자. 우선 ACM 인증서를 먼저 생성한다.
02. ACM 인증서 생성
02-1. ACM 인증서 요청
필자의 경우, 이전에 가비아에서 ymkim.shop 이라는 도메인을 구입하였다. 이제 해당 도메인을 기반으로 ACM을 생성할 예정이다. 우선, 위 화면에 있는 인증서 요청이라는 버튼을 클릭한다.
02-2. ACM 인증서 요청 화면
인증서 요청 버튼을 클릭하면 위와 같이 인증서 유형을 지정하는 화면이 출력된다. 여기서는 옵션 변경없이 퍼블릭 인증서 요청이 선택된 채로 두고 다음 버튼을 클릭한다.
02-3. 퍼블릭 인증서 요청
다음 버튼을 클릭하면 위와 같은 화면이 출력된다. 여기서는 주로 도메인 이름, 검증 방법, 키 알고리즘 세 가지 옵션을 설정하게 된다. 각 옵션에 대한 내용을 아래에서 정리한 후, 다음 단계로 넘어가도록 하자. 우선 도메인 이름부터 살펴보자.
왜 와일드카드(”*”)를 사용하지?
도메인 이름에 와일드카드(”*”)를 사용하는 이유는, 해당 도메인의 하위 서브도메인(www.ymkim.shop, api.ymkim.shop, blog.ymkim.shop 등)에 대해 하나의 인증서로 HTTPS를 적용할 수 있기 때문이다. 만약 *를 사용하지 않고 서브도메인을 하나하나 개별로 지정할 경우, 새로운 서브도메인이 추가될 때마다 인증서를 다시 발급받아야 하는 번거로움이 생긴다. 따라서 *를 사용하여 이러한 관리 부담을 미리 방지할 수 있다.
1. 도메인 이름
ACM 인증서를 발급받을 도메인 이름을 지정하는 옵션이다. ymkim.shop과 같은 2차 도메인은 물론, 하위 도메인을 커버하기 위해 *.ymkim.shop과 같은 와일드카드 서브도메인도 지정할 수 있다. 이를 통해 하나의 ACM 인증서로 여러 도메인에 대해 HTTPS를 적용할 수 있다.
2. 검증 방법
검증 방법은 ACM에 등록한 도메인 이름이 실제 본인 소유인지 AWS가 확인하는 방식을 설정하는 옵션이다. 검증 방식으로는 DNS 검증과 이메일 검증 두 가지가 존재한다. DNS 검증은, 도메인 설정에 AWS가 요구하는 특별한 TXT 레코드를 추가함으로써 소유권을 증명하는 방식이다. AWS가 이 TXT 레코드를 감지하면 도메인 소유자 인증이 된다. 이메일 검증은, 도메인 등록 시 입력한 이메일 주소(admin@도메인명)로 AWS가 이메일을 발송하고, 메일을 통해 직접 인증하는 방식이다. DNS 설정을 직접 수정할 수 없는 경우에 주로 사용한다.
3. 키 알고리즘
RSA 2048, ECDSA P256, ECDSA P384
ACM이 SSL/TLS 인증서를 만들 때, 서버와 클라이언트가 서로 안전하게 통신할 수 있도록 “암호화 키” 한 쌍(공개키, 개인키)을 제공한다. 즉, 여기서 말하는 키 알고리즘은 암호화 키를 어떤 방식으로 만들지를 지정하는 옵션이다.
요청 버튼을 클릭하면 인증서가 생성되고, 검증 단계가 진행된다. 이후 Route53에서 레코드를 생성해야 한다. 앞서 언급했듯, 필자는 ACM 인증서를 생성한 뒤 DNS를 통한 검증 방식을 선택했다. 따라서 Route53에서 해당 도메인에 TXT 레코드를 추가하고, 이를 통해 AWS가 도메인 소유권을 검증하도록 진행할 예정이다.
02-4. Route53의 레코드 생성 클릭
ACM 생성 화면에서 Route53 레코드 생성 버튼을 클릭한다.
02-5. Route53에서 DNS 레코드 생성 화면
버튼을 클릭하면 도메인과 검증 상태가 표시되며, 레코드 생성을 진행할 수 있다. 하지만 현재 Route53에 호스팅 영역이 없고 외부 도메인을 사용 중이므로, 먼저 Route53에 호스팅 영역을 생성해야 한다. 생성이 완료되면, ACM이 요구하는 CNAME 레코드를 Route53에 추가하고, 가비아에서는 네임서버(NS) 정보를 Route53의 NS 값으로 변경해야 한다.
Route53의 “호스팅 영역"이란, 특정 도메인에 대한 “DNS 레코드”를 관리할 수 있는 논리적 공간을 의미한다.
예: A, AAAA, CNAME, TXT 레코드 등을 관리하는 논리적 공간이다.
02-6. Route53 호스팅 영역 생성
Route 53 > 호스팅 영역 > 호스팅 영역 생성으로 이동한 후에 개인이 소유한 도메인(example.com)을 도메인 이름에 넣어주고 호스팅 영역을 생성한다. 후에 호스팅 영역이 생성이 되면 기본적으로 NS(권한있는 네임서버)와 SOA(서버 기본 인증정보) 도메인 레코드가 아래와 같이 생성된 것을 확인할 수 있다.
이제 이전에 진행하던 ACM 작업을 마무리하기 위해 다시 ACM으로 이동한다.
02-7. 인증서 Route53 레코드 생성
위 사진과 같이, 이전과 다르게 레코드 생성 버튼이 활성화 된것을 확인할 수 있다. 그럼 레코드 생성 버튼을 클릭하자. 생성 후 Route53로 이동하면 CNAME DNS 레코드가 생성이 된걸 확인할 수 있다.
근데 ACM의 DNS 검증은 TXT 파일을 도메인에 추가해서 인증한다고 하지 않았나?
Name : _abcde.example.com.
Type : CNAME
Value : _xyz.acm-validations.aws.
과거에는 ACM이 도메인 소유권을 검증할 때 TXT 레코드를 사용했지만, 최근에는 기본적으로 CNAME 레코드를 생성하도록 요구한다. 따라서 Route53에서 레코드 생성 버튼을 클릭하면 TXT가 아니라 CNAME 레코드가 생성되는 것이다. 이후, 위에서 제공된 Name과 Value 값을 CNAME 레코드에 등록하면, AWS는 해당 정보를 조회하여 도메인 소유권을 검증한다.
03. 가비아 네임서버(NS) 변경
account.gabia.com
accounts.gabia.com
이제 Route53 호스팅 영역도 만들고, 레코드 생성도 하였으니 가비아의 NS를 Route53의 NS로 변경해야 한다. 위 이미지의 빨간 네모 박스의 값을 복사하고, 도메인을 구입한 가비아(My 가비아 페이지)로 이동한다.
03-1. 도메인 NS 수정
위 이미지에서 관리 버튼을 클릭해 네임서버 설정을 수정한다. 이때 중요한 점은, NS 레코드 입력 시 마지막에 붙은 루트 도메인(.)을 제거하고 입력해야 한다. 이유는 가비아는 사용자가 입력한 도메인(example.com)에 대해 자동으로 끝에 “.”을 붙혀서 처리한다. 그렇기에 제거를 안하면 오류가 발생할 수 있기에 제거한다. 추가로, 마지막에는 소유자 인증을 진행 해줘야 한다.
04. ALB 생성
04-1. ALB 생성 및 ACM 연결
이제 AWS 콘솔로 접근하여 로드밸런서 생성 버튼을 클릭한다. 후에 ALB(Application Load Balancer)를 선택한다. ALB의 자세한 옵션은 아래 내용을 참고하면 된다.
- 로드밸런서 이름 : test-alb-stg
- 체계 : 인터넷 경계
- 로드 밸런서 IP 주소 유형 : IPv4
- VPC : ALB가 구동되어야 하는 VPC 지정
- 가용영역 및 서브넷
- ap-northeast-a (apne2-az1)
- ap-northeast-b (apne2-az2)
- 보안그룹 : ALB 전용 보안그룹 지정
- 리스너 및 라우팅
- 프로토콜 : HTTPS / 443 / 타겟그룹 지정
- 보안 카테고리 : 모든 보안 정책
- 정책 이름 : ELBSecurityPolicy-TLS13-1-2-2021-06 (권장)
- 기본 SSL/TLS 인증서
- 인증서 소스 : ACM에서
- 인증서(AMC에서) : 위에서 만든 ACM 인증서 선택
- 로드 밸런서 생성 버튼 클릭
ALB를 생성하고 나면, 해당 ALB에 ACM 인증서가 들어간 것을 확인할 수 있다.
04-2. Route53의 A 레코드 추가
마지막으로 Route53 호스팅 영역으로 이동한 뒤, 레코드 생성 버튼을 클릭하여 A 레코드를 추가한다. A 레코드를 추가하는 이유는, 도메인으로 들어오는 요청을 A 레코드를 통해 ALB로 연결하여 트래픽을 전달하기 위함이다.
04-3. ALB 80 리스너 추가
이제 ALB의 80 리스너를 추가한 후에, HTTP 80로 요청이 들어오는 경우는 HTTPS 443로 리다이렉션을 수행하도록 수정한다. 이렇게 설정하면, HTTPS 이외의 요청에 대해서는 모두 Redirection을 수행할 것이다.
05. 마무리
가비아에서 구매한 도메인명(example.com)을 통해 ACM 인증서를 발급받았다. 또한, Route53의 호스팅 영역 및 레코드를 추가하고 이렇게 생성 된 인증서를 ALB에 연동하는 과정까지 진행 하였다. 이를 통해 HTTPS 통신을 수행할 수 있게 되었으며, 포스팅을 마무리한다.
99. 참고 자료
[AWS] 가비아 도메인 구입 후 Route53을 통한 EC2 연결 방법
이번 포스팅에서는 가비아에서 구입한 도메인을 AWS Route 53에 연결하는 과정을 다뤄본다. 이렇게 연결된 도메인은 새로 생성한 EC2 인스턴스로 트래픽을 전달하도록 설정할 예정이며, 도메인의
sw-ym.tistory.com
가비아 도메인을 AWS ACM에 등록하기
가비아에서 도메인을 구매해서 SSL/TLS 인증서를 적용하려고 한다시작하기 전 가비아에서 도메인을 구매한 상태로 시작한다 인증서를 만들기 위해 ACM에 들어가 인증서 요청을 한다 퍼블
st-ycloud.tistory.com
AWS Certificate Manager란 무엇인가요? - AWS 인증서 관리자
이 페이지에 작업이 필요하다는 점을 알려 주셔서 감사합니다. 실망시켜 드려 죄송합니다. 잠깐 시간을 내어 설명서를 향상시킬 수 있는 방법에 대해 말씀해 주십시오.
docs.aws.amazon.com
'Public Cloud > AWS - Practice' 카테고리의 다른 글
[AWS] ECS Rolling Update, Blue/Green 배포 방식이란? (0) | 2025.05.16 |
---|---|
[AWS] ECR VPC Endpoint 생성 간단히 정리 (0) | 2025.05.03 |
[AWS] ECS 운영 중 발생한 주요 사례 Case별로 정리 (0) | 2025.04.25 |
[AWS] Opensearch 설치 및 클러스터링 환경 구성 (0) | 2025.04.15 |
[AWS] SSM Parameter Store (0) | 2025.04.12 |