[AWS] EC2에 SSL 적용하기 (Feat. ACM, Route53, ALB, Nginx)

준우·2023년 3월 29일
1

AWS

목록 보기
2/3
post-thumbnail

(1) 도메인 구매

  • aws 접속 및 로그인 후 , route 53의 [등록된 도메인]에서 [도메인 등록]을 클릭한다.
  • 원하는 도메인을 입력하고 검색한 후 마음에 드는 가격과 이름을 가진 도메인을 장바구니에 추가하고 [계속]을 클릭한 뒤 연락처를 입력하고 또 [계속]을 누른다. 약관을 확인하고 최종 주문을 한다.
  • 도메인 등록에 성공할 때까지 대기 한다.

(2) ACM 발급

  • 도메인 등록이 성공하면 아마존에서 무료로 발급해주는 SSL 인증서를 발급받을 수 있다.
  • AWS 메뉴에서 Certificate Manager 에 접속한 뒤 [인증서 요청]을 클릭한다.
  • 다음을 클릭하고, 구매했던 도메인 이름을 그대로 적는다.
    *.도메인이름 과 같이 와일드 카드를 적용할 수 있다.
  • 인증서를 생성하고 나서는 [인증서 나열] 페이지에서, 새로 생성된 해당 인증 ID를 클릭한다.
  • 그리고 도메인 영역에서, [Route 53에서 레코드 생성]을 클릭한다.
  • 구매한 도메인이 나오면 선택 후, [레코드 생성]을 클릭한다.
  • 시간이 지나면 인증서가 발급된다.

(3) 로드밸런서 설정

  • AWS의 서비스 메뉴에서 EC2를 선택한 후, 로드 밸런서를 클릭한다.
  • [create load balancer]를 클릭한 뒤 [Application Load Balancer] 아래 [create]를 클릭한다.
  • 로드밸런서의 이름을 지정하고, [Network mapping] 영역에서는 인스턴스와 동일한 네트워크를 포함해 2개 이상의 영역을 선택한다. 잘 모르겠다면 일단은 4개 모두 선택한다.
  • 보안그룹 역시 EC2와 동일한 규칙으로 설정한다.
  • 그리고 HTTP 80포트와, HTTPS 443 포트를 설정할 건데, Default action 부분에서 [create target group]을 클릭해 대상 그룹을 만들어준다.
  • 타겟 그룹의 이름을 정해주고 [Next]를 클릭한 다음 로드밸런서를 적용할 인스턴스 선택 후 [Include as pending below]를 클릭한다음 [create target group]을 누른다.
  • 동일한 방식으로 https 대상그룹도 만들어 준다.
  • 이후 default action 부분에서 방금 생성한 대상그룹을 선택해준다.
  • add listner를 클릭해 http, https 모두 생성해준다.
  • 그리고 [create load balancer]를 클릭한다.
  • 생성된 로드밸런서를 클릭한 뒤, Listner 부분에서 https를 선택한 뒤 actions의 [add ssl certicates for sni]를 클릭한다.
  • 이후 페이지가 이동 되면 발급받았던 인증서를 클릭한 뒤 [include as pending below]를 클릭한다. 그리고 [add pending certificates]
    를 누른다.
  • 그리고 다시 로드밸런서의 listner 탭에서 http 혹은 https를 클릭한 뒤 Rule 영역에서 Manage rules를 클릭한다.
  • 규칙페이지 상단의 + 아이콘을 누르고, [규칙 삽입]을 클릭하여 아래와 같이 아마존 인증서를 발급받을 때 입력했던 도메인주소를 호스트헤더로 등록하고, 전달 대상은 http로 설정한다.
  • http 를 설정했다면 페이지 상단에서 https를 클릭해 이동한다.
  • 아래와 같이 동일하게 설정해준다.

(4) Nginx 설정

  • 터미널을 열고 ssh 명령어로 ec2 에 접속한 뒤 아래 명령어를 입력해 nginx 설정파일을 연다.
cd /etc/nginx
sudo vim nginx.conf
  • server {} 내부에 server_name은 구매했던 도메인 이름으로 변경해주고, 아래 if문을 추가해서 http 요청을 https로 리다이렉트 해준다.
    server {
        listen       80;
        server_name  *.we-manage.link; # 도메인 이름으로 변경

        # HTTP 요청을 HTTPS로 리다이렉트
        if ($http_x_forwarded_proto = 'http'){
           return 301 https://$host$request_uri;
        }

(5) Route 53 설정

  • aws 서비스의 route 53 페이지로 이동한 뒤 호스팅 영역에서 도메인을 클릭한다.
  • 그리고 [레코드 생성] 을 클릭해서 레코드 이름을 지정하고, 별칭 옵션을 클릭해 파란 불로 바꿔준 뒤, 트래픽 라우팅 대상을 아래처럼 Application/classic balancer아시아 태평양(서울) 을 선택하고, 맨 아래칸에는 이전에 생성한 로드밸런서의 이름을 선택한 뒤 [레코드 생성]버튼을 누른다.
  • 이후 도메인에 접속하면 http로 접속해도 https로 리다이렉트 된다.

0개의 댓글