본문 바로가기
Cloud/aws

[AWS] SSL인증서 적용 (Route53/ACM/로드밸런서)

by 아크투어 2023. 4. 12.
반응형

1. 개요

  • AWS SSL 인증서를 발급받아 외부도메인과 연결하고, nginx와 연동하여 적용해본다.
  • 필요한 서비스 정보는 아래와 같다.
  • 대략적인 아키텍처 환경구성은 아래와 같다.

aws ssl
aws ssl

 

  • https://www.arckwon.com 해당도메인에 ssl을 적용할 것이다.
  • 내용이 약긴 길지만 그대로 따라하면 SSL을 쉽게 사이트에 적용할수 있다.
  • 아래는 SSL적용된 사이트의 모습이다.

aws https 예시
aws https 예시

 

 

2. AWS SSL 구축에서 필요한 서비스

  • ACM : AWS Certificate Manager로 실제 인증서를 생성
  • Route53 : 복잡한 구성의 여러 엔드포인트에 대해 정책을 쉽게 생성할 수 있는 시각적 도구
  • Load balancers :  Amazon Web Services(AWS)에서 제공하는 서비스 유형으로 수신 트래픽을 여러 인스턴스 또는 서버에 분산할 수 있습니다.

 

3. Route53 설정

  • 호스팅 영역 생성 클릭

aws route53 호스팅영역 생성
aws route53 호스팅영역 생성

 

  • 도메인이름/설명/유형(퍼블릭 호스팅 영역) 입력
  • 호스팅 영역 생성 클릭

route53 호스팅생성
route53 호스팅생성

 

  • 아래와 같이 레코드유형 NS와 SOA가 두개가 생성되어 있다.

route53 호스팅정보
route53 호스팅정보

 

  • 외부도메인 네임서버 정보 등록
  • Route 53 목록에서 NS유형항목 값/트래픽 라우팅대상 항목의 1~4차까지의 네임서버 정보를 외부사이트에 등록한다.
  • 호스팅서비스 가비아 기준으로 아래처럼 입력한다.

가비아
가비아

 

4. ACM 설정과 CNAME등록

  • 인증서 요청 클릭

aws acm
aws acm

 

 

  • 퍼블릭 인증서 요청 선택후 다음버튼 클릭

aws acm 인증서유형
aws acm 인증서유형

 

 

  • 도메인이름 / 검증방법(DNS) / 키알고리즘 RSA2048 입력후 아래 요청버튼 클릭

aws acm 인증서 요청
aws acm 인증서 요청

 

  • 상세조회 화면에서 Route 53에서 레코드 생성 버튼 클릭
  • Route 53에 CNAME을 등록해야한다. (CNAME은 인증서 검증및 향후 만료시 자동갱신할때 필요하다)

acm cname
acm cname

 

  • 아래화면은 이미 적용된 화면이다. 
  • 주황색 버튼인 레코드생성 버튼을 클릭하고 Route53 관리 화면으로 이동한다.

aws acm 레코드생성
aws acm 레코드생성

 

  • Route 53화면목록이다.
  • CNAME이 생성되어 있다.

aws route53
aws route53

 

 

5. 외부사이트 CNAME정보등록

  • 해당부분은 호스팅 업체마다 다르겠지만 가비아 기준으로 작성한다.
  • 가비아 사이트에서 CNAME정보를 등록한다.

가비아 CNAME
가비아 CNAME

 

 

6. AWS ACM에서 인증서 발급 상태확인

  • 위모든 작업을 정상적으로 수행시 ACM의 인증서는 아래와 같이 발급되어있다.
  • 아직 실제 웹사이트와는 연동되지않아 사용중/갱신자격이 정상적이지는 않다.

aws 인증서 발급
aws 인증서 발급

 

여기까지 1차적으로 인증서는 발급받았다.

두번째 작업으로 AWS 로드밸런서를 사용하여 웹사이트와 연동해보자.


 

7. 로드밸런싱

  • EC2 대시보드 화면에서 아래 로드밸런서/대상 그룹 두가지를  설정해야 한다.

aws 로드밸런서
aws 로드밸런서

 

 

  • Application Load Balancer Create 버튼클릭

aws ec2 Load balancers
aws ec2 Load balancers

 

  • ALB 항목 아래처럼 작성

aws alb
aws alb

 

  • Mapping 부분은 하나만 선택해도 되지만 본인은 4개다 선택한다.

aws alb
aws alb

 

  • 보안그룹항목은 EC2생성당시 사용한 보안그룹을 사용하였다.

aws ssl
aws ssl

 

 

  • 리스너 HTTP 80과 HTTPS 443을 추가한다.
  • 아래처럼 셋팅하고 각항목마다 대상그룹을 연결해야된다.
  • 참고로 타겟그룹은 하나만 만들면 되고 그하나를 리스너80/리스너443에 연결한다. (타겟 2개생성하는것 아님)
  •  (create target group) 클릭

aws ssl target group
aws ssl target group

 

8. 로드밸런싱 > 타켓그룹생성

  • Instances 선택

aws ec2 target group
aws ec2 target group

 

  • HTTP 80 추가
  • VPC는 로드밸런서에서 선택한 VPC
  • 프로토콜 버전은는 HTTP1

aws ssl target group
aws ssl target group

 

  • /health_check 처럼 별도로 URL을 만들어도 되고 사용해도 되고 그냥 "/"로 표기해도 된다.
  • 입력이 완료되면 Next버튼을 클릭해서 생성한다.

aws health check
aws health check

 

  • /health_check처럼 별도 URL사용시 nginx기준 아래처럼 한다.
# etc/nginx/nginx.conf
	
server {
    listen      80;                				
    server_name ~.;
    client_max_body_size 110M;			
		
    #aws health_check 확인용
	if ($request_uri = '/health_check'){
        return 200 'OK';
    }	
  	     
    ....

 

 

  • 생성이 완료되면 아래화면으로 이동한다.
  • 생성된 대상그룹을 AWS EC2와 매핑하는 부분이다.
  • 해당 EC2를 선택하고 아래 Include as pending below 버튼을 클릭하자.

Include as pending below
Include as pending below

 

  • 클릭하면 아래 ec2 사이트가 추가되어 있다.
  • Create target group 버튼클릭
  • 나중에 왼쪽메뉴 로드밸런싱 > 대상그룹에 가보면 아래항목이 등록되어 있다.

로드밸런서 ec2연동
로드밸런서 ec2연동

 

 

9. 다시 순번7번 로드밸런싱 으로 돌아와서 계속진행

  • 새로고침 버튼을 클릭하면 방금 생성한 대상그룹이 목록에 표시된다. 
  • 해당항목을 선택한다.

로드밸런서 listener 설정
로드밸런서 listener 설정

 

  • 생성한 타켓으로 80리스너/443리스너에 각각 매핑한다.
  • 리스너별로 80/443 타켓을 각각 만들지 않고 하나의 타켓으로 매핑한다.

로드밸런서 listener 설정
로드밸런서 listener 설정

 

  • Security policy는 추천하는것으로 하였다.
  • 오른쪽 SSL/TLS부분은 앞서 등록한 ACM정보를 가져온다.
  • 선택완료후 아래 보면 Add-on services/tag/summary 탭이 있는데 무시하고 Create load balancer 버튼을 클릭한다.

aws acm
aws acm

 

  • 생성완료된 로드밸런서

aws 로드밸런서
aws 로드밸런서

 

10. 다시 Route 53으로이동

  • 위작업까지 완료하고 다시 Route 53으로 이동한다.
  • 여기서 A 유형 즉 로드밸런서를 도메인과 연동해야한다.
  • 레코드 생성 버튼을 클릭한다.

aws route53
aws route53

 

  • 아래와 같이 앞에서 생성한 항목들을 입력한다.
  • 레코드 생성 버튼을 클릭한다.

route53 레코드생성
route53 레코드생성

 

  • 위와 동일한 정보로 www 에 대한 레코드도 하나 만들어준다.

route53 레코드생성
route53 레코드생성

 

 

11. 최종완료

aws route53
aws route53

 

aws ssl 적용사례
aws ssl 적용사례

 

반응형