-
# 외부 DNS 도메인 AWS alb 연동개발메모 2025. 2. 11. 17:47
aws route 53으로 DNS를 구성해 사용하는 방법도 있으나,
이미 회사 도메인을 별도 DNS로 구매했기 때문에 어쨌든 연동할 필요가 생겼다.
작업 전 기반 사항- ECS 구축
- ECS에 연결된 ALB
- 도메인 연결 전에는 SSL 등록 없이 ALB의 DNS로 사용. (대신 내부에서만 사용..)
- DNS 도메인 구매 및 인증서 발급
위 기반사항에 대한 내용은 추후에 다루기로 하고,
일단 오늘은 외부 DNS에서 발급한 도메인에서 파생된 서브도메인을 AWS서비스와 연결하는 방법을 기재 하겠다.
작업 순서를 적으면 다음과 같다
1. DNS에서 발급한 인증서를 ACM에 등록
2. ALB의 리스너 규칙에 HTTPS 추가
3. ALB의 보안그룹에 HTTPS 인바운드 규칙 추가
4. ALB 리스너의 대상그룹의 상태검사 프로토콜을 HTTP -> HTTPS 변경
5. DNS 서버에 CNAME으로 서브도메인 추가
하나씩 상세 설명을 덧붙인다.
1. DNS에서 발급한 인증서를 ACM(AWS Certificate Manager)에 등록
도메인 인증서에는 다음과 같은 파일들이 있다고 한다.
{domain_name_crt}.pem # 공개 인증서 Private.key # 암호화 된 개인키 {ca_bundle_chain}.crt # 중간 인증 기관(CA) 번들키
해당 키들의 정보를 ACM에 등록하면 된다.
특히 Private.key는 암호화가 되어있기 때문에 비밀번호와 함께 전달 된다. (RSA 암호화)
ACM에 등록시에는 복호화를 해서 올려야 한다.
# Private key 복호화 openssl rsa -in Private.key -out decrypted_private.key # decrypted_private.key에 내용 업로드
aws console > AWS Certificate Manager 를 검색
'인증서 가져오기' 항목 선택 후
인증서 정보를 입력
1에 공개 인증서 정보를
2에 Private key 정보를
3에 CA 번들키 정보를 입력 후
4 인증서 가져오기 버튼을 누르면 끝.
이렇게 등록 되면 성공이다.
2. ALB의 리스너 규칙에 HTTPS 추가
SSL 등록이 완료 되었으니, 이제 적용할 차례.
미리 생성해둔 ALB(application load balancer)에 HTTPS 리스너를 추가한다.aws console > EC2 > 로드 밸런싱 > 로드밸런서
에서 적용하고자 하는 로드 밸런서를 선택해당 로드밸런서에서 '리스너 및 규칙' 을 선택 후 '리스너 추가' 클릭
리스너 구성은 다음과 같이 한다.
1에 프로토콜에는 HTTPS를 지정하고 포트는 443을 입력
2에 라우팅액션에는 대상 그룹으로 전달을 클릭 후 대상그룹을 선택한다. (또는 신규 생성)
아래와 같이 HTTPS:443의 리스너가 추가 된다.그러면 HTTP:80의 기본 작업을 바꿔줘야 한다. HTTP로 호출되는 경우에 HTTPS로 리다이렉트 되도록.
HTTP:80 리스너를 선택 후 리스너 편집을 한다.
라우팅 액션을 변경해주면 된다.
대상 그룹으로 전달 -> URL로 리디렉션
그리고 프로토콜 정보를 입력한다. (HTTPS 리스너 정보를 넣어 준다)
이렇게 하면 리스너 세팅도 완료 된다.
3. ALB의 보안그룹에 HTTPS 인바운드 규칙 추가
기존에는 HTTP:80으로 외부 통신을 설정했기에, 인바운드 규칙에는 80포트만 전체 접속이 허용 가능하도록 되어있었다.
여기에 HTTPS:443도 전체 접속이 가능하도록 인바운드 규칙을 추가하면 된다.
aws console > EC2 > 보안그룹 에서 로드밸런서와 연동된 보안그룹을 선택
또는
해당 로드밸런서 상세의 '보안'탭에 있는 보안그룹을 선택한다.인바운드 규칙 탭의 인바운드 규칙 편집 클릭
1에 규칙추가 클릭하여 신규 인바운드 규칙 생성
2와 같이 유형 HTTPS, 소스 anywhere/IPv4 로 전체 접속 허용하고
규칙을 저장한다.
4. ALB 리스너의 대상그룹의 상태검사 프로토콜을 HTTP -> HTTPS 변경
해당 작업은 필수적이지 않지만, 서버 상태 체크를 위한 설정을 기존 HTTP -> HTTPS로 변경하는 과정이다.
aws console > EC2 > 로드 밸런싱 > 대상 그룹 선택 후
작업한 로드밸런싱과 연결되어있는 대상 그룹을 선택 후 (2번)
상태검사 탭을 선택 (3번)
편집을 클릭한다 (4번)상태 검사 프로토콜을 HTTP -> HTTPS로 변경한다.
5. DNS 서버에 CNAME으로 서브도메인 추가
해당 내용은 DNS마다 UI나 명칭이 조금씩 다를 수 있어 글로만 기록한다.
사용하고자 하는 도메인에서 CNAME으로 사용하고자 하는 서브도메인을 등록 후
해당 서브 도메인에서 연결할 URL주소에 ALB에서 조회 되는 DNS 정보를 입력 하면 끝.
도메인은 설정을 적용하고 전파되는데 시간이 좀 소요되기 때문에 최소 5~10분정도 ping이나 nslookup 명령어등으로 상태 체크를 한다.
ALB의 DNS 정보를 보는 방법
'개발메모' 카테고리의 다른 글
# DB PK Index 생성 속도 저하 이슈 (postgreSQL) (0) 2025.03.24 # AWS ECS 구성하기 (0) 2025.02.17 # AWS ElastiCache 사용하기 (0) 2025.02.06 # shell 파일 명령어(프로세스 종료) (0) 2025.02.04 # 맥북 명령어 끄적끄적 (0) 2025.01.03