DevOps와 Infra/AWS / / 2025. 6. 10. 16:07

AWS ALB+ACM을 사용하여 인증서 적용하기

 

 

웹 페이지를 호스팅 할 때 HTTPS를 적용하려면 주로 Nginx 등을 사용하여 SSL/TLS 인증서를 적용합니다.

만일, 클라우드 서비스를 사용하고 있다면 간편하게 인증서를 적용하는 방법이 있습니다.

 

<순서>

1. ACM발급하기

2. 대상그룹 생성하기

3. 로드밸런서 세팅하기

4. Route53 레코드 생성하기

5. +@

 

1. ACM 발급하기

- 이 부분은 인증서 기관에서 발급하거나, 인증서 키 파일을 등록하는 방식으로 진행하나 이 글에서는 생략하겠습니다.

 

2. 대상 그룹 생성하기

로드밸런서로 들어오는 트래픽을 전달할 '대상'을 지정하는 역할입니다.

인스턴스, Lambda 등 원하는 목적지를 설정할 수 있습니다.

 

2-1) AWS - EC2 - (좌측 사이드바)로드 밸런신 - 대상 그룹 접속 - 대상 그룹 생성

 

2-2) 대상 그룹 생성하기

  • 대상 유형 선택 :
    클라이언트의 요청을 보내줄 목적지를 지정합니다.
    EC2 인스턴스에 호스팅된 웹 서비스로 요청을 보내기 위하여 '인스턴스'로 지정하여 진행합니다.

  • 프로토콜 : 
    클라이언트가 요청하는 프로토콜을 지정합니다.
    본 포스팅의 목적은 인증서 적용을 통한 HTTPS 접속이므로 HTTPS를 선택합니다.
    웹 서비스에 요청을 직접적으로 보내는 것이므로 HTTP 프로토콜로 요청을 보냅니다.

 

  • VPC, 프로토콜 버전 : 
    ALB는 VPC내에서 하나의 네트워크 노드처럼 작동하므로 대상그룹 VPC는 목적지 인스턴스와 같은 VPC를 설정합니다.
    프로토콜 버전은... 잘은 모릅니다...

  • 상태검사
    흔히 JAVA 프레임워크에서 진행하는 Health Check 엔드포인트를 작성해주시면 됩니다.

2-3) 대상 등록

  • 사용 가능한 인스턴스
    웹 서비스가 호스팅 되고 있는 인스턴스를 선택합니다.
  • 선택한 인스턴스를 위한 포트
    웹 서비스가 호스팅 되고 있는 포트를 입력합니다. (ex. Springboot 8080 등등)
  • 아래에 보류 중인 것으로 포함 : 클릭

2-4) 대상 그룹 생성을 하게 되면 해당 인스턴스 포트와 통신이 되는지 대상 그룹에서 자체적으로 체크하게 됩니다.

 

 

3. 로드밸런서 세팅하기

클라이언트의 요청을 설정한 대상으로 트래픽을 분산하거나, 전달하는 역할을 합니다.

로드밸런서에는 ALB, NLB, CLB가 존재합니다.

이 중 웹 서비스(HTTP(s))는 ALB가 사용됩니다.

 

3-1) 로드밸런서 생성하기

AWS - EC2 - (좌측 사이드바)로드 밸런싱 - 로드밸런서 - 로드 밸런서 생성 - Application Load Balancer

3-2) 기본 구성

체계 : 퍼블릭 통신 (클라이언트 요청)이 목적이므로 '인터넷 경계'를 선택
(VPC내부에서 통신 시 (like ubuntu hostname / docker container name 설정) '내부'를 선택)

 

3-3) 네트워크 매핑

  • VPC : 2)에서 설정한 대상그룹과 같은 VPC로 설정합니다.
  • IP풀 : IP를 직접적으로 관리한다면 사용한다고는 합니다... (잘... 몰라요...)
  • 가용 영역 및 서브넷
    가용 영역 : 최소 2개 이상의 가용 영역을 선택합니다. 로드밸런서의 트래픽 처리 기술의 원리라고 알고 있습니다.
    서브넷 : 서브넷 지정 시, IGW가 연결된 서브넷을 선택하는걸 권장드립니다. Private 서브넷을 지정하면 해당 서브넷으로도 트래픽 요청이 가는건지... 다소 느려지므로
    되도록이면 IGW가 연결된 Public Subnet을 지정합니다.

 

 

  • 보안그룹 & 리스너
    리스너 : 일반적인 HTTPS 접속을 처리하려면 443포트를 지정하고, 2)에서 만든 대상그룹을 지정합니다.
    *1)보안그룹 : 리스너에 지정한 프로토콜(ex. HTTPS(443))이 인바운드 허용된 보안 그룹을 설정합니다.
      인스턴스에 지정된 보안그룹에 유의해야합니다. 아래에 후술.

 

  • 보안 리스너 설정
    HTTPS 리스너를 통해 암호화된 트래픽 처리를 위하여 인증서를 선택합니다.
    ACM의 인증서를 선택 시. 해당 인증서가 와일드카드 인증서(*.example.com)인지 확인하여 Route53 서브 도메인 레코드 생성이 가능한지 확인합니다.

  • 로드밸런서 생성 버튼 클릭

3-4) 로드밸런서 정보 확인하기

  • 리소스 맵
    리소스맵을 보면 트래픽이 어떤 식으로 처리되는지 시각적으로 확인 가능합니다.
    리소스맵의 '대상' 부분에 초기 세팅이 완료되면 Health 체크 결과를 보여주게 됩니다.
  • DNS 이름 (=임시 DNS)
    정상적으로 연결되었는지 체크하려면 DNS이름을 복사하여 웹브라우저 주소창에 입력 후 접속시도해보면 됩니다.

 

 

4. Route53 레코드 생성하기

~3 까지 세팅한 로드밸런서(ALB)를 이제 도메인 레코드를 지정해봅시다.
ALB에 이미 인증서가 적용되어 있으며 1개의 네트워크 노드이기에 A레코드로 지정하면 됩니다.

  • 레코드 이름
    ACM에 등록된 인증서가 와일드카드 인증서라면 서브도메인 지정이 가능합니다.
  • 트래픽 라우팅 대상
    1) 별칭 체크
    2) Application Load Balancer에 대한 별칭
    3) 리전 선택
    4) ~3까지 세팅한 로드밸런서 선택
    5) 레코드 생성

 

정상적으로 라우팅 된 모습

 

+@  보안그룹에 대하여

*1) 로드밸런서를 통해 인스턴스에 연결할 때 인스턴스에 연결된 보안그룹에 유의해야합니다.

인스턴스 입장에서는 '클라이언트'의 트래픽 요청을 신뢰하는 것이 아닌, '로드밸런서'의 트래픽 요청을 신뢰합니다.

따라서 인스턴스 보안그룹의 인바운드 규칙에 서비스포트 지정 시 '소스'를 '로드밸런서의 보안그룹' 으로 지정해야합니다.

 

@1) 로드밸런스에 지정된 보안그룹 (443 허용)


@2) 인스턴스 보안그룹
 - 443 포트 허용이 아닌, 8080포트 허용

 - 허용 대상(소스)는 로드밸런서의 보안그룹으로 지정함.

 

  • 네이버 블로그 공유
  • 네이버 밴드 공유
  • 페이스북 공유