본문 바로가기

aws/Route53

AWS SSL(HTTPS) 적용 방법 - SSL 적용 ELB(3)

이전 포스팅까지 HTTPS를 적용할 도메인을 구입하고 그 도메인에 SSL을 등록하는 방법을 

알아보았습니다. aws에서 도메인에 SSL을 등록한다고 바로 사용할 수 있는 것이 아닙니다. 

그 도메인을 사용하기 위해서 다음 작업으로 무엇을 해야하는지 이번 포스팅에서 알아보겠습니다. 

 

1. 도메인을 구입(AWS route53)

2. 도메인 구입한 것을 AWS route53과 연결

3. AWS ACM을 통해서 구입한 도메인의 SSL Certificate를 발급

4. ELB에 SSL Listener 생성

5. ELB security group 설정

6. 최종 SSL 적용

 

aws에서 SSL을 등록한 도메인을 사용하기 위해서는 로드밸런서를 이용해야합니다. 

aws ec2에 접속해 대시보드에 들어옵니다. 

ec2 대시보드 메뉴에 하단에 보면 로드 밸런서 메뉴가 있습니다. 

로드밸런서 메뉴에 클릭하여 들어갑니다. 

로드 밸런서 화면에서 "로드밸런서 생성" 버튼을 클릭하면 다음과 같은 화면이 나옵니다. 

aws 로드밸런서에는 세가지 종류가 있습니다. OSI 7계층을 기준으로

 - Application Load Balancer : 7 layer(HTTP/HTTPS)

 - Network Load Balancer : 4 layer(TCP/TLS/UDP)

 - Classic Load Balancer

세가지 종류가 있습니다. 

저는 Application Load Balancer(7 layer)로 선택하겠습니다. 

 

이번 화면에서는 세가지 항목을 입력해야합니다. 

1. 임의의 로드밸런서 이름을 지정합니다. 

2. 리스너를 설정합니다. 

 - https 통신은 http + 인증서 확인 입니다. 

 - http 통신에 필요한 포트 한개(본인이 해당 도메인으로 사용할 포트) + https 통신에 필요한 포트 한개(443: 필수)를 열어줍니다. (최소 이렇게 두개는 설정해 주어야 합니다.)

3. aws 에서 vpc와 가용영역을 설정합니다. 

 - vpc를 사용하지 않는다면 디폴트 vpc가 설정될 것입니다. 

 - vpc를 사용하고 있다면 사용할 vpc를 설정합니다. 

 - vpc 안에서 사용할 가용영역을 설정합니다. 

위의 세가지 설정을 마쳤다면 "다음:보안 설정 구성" 버튼을 클릭하여 다음으로 넘어갑니다. 

보안 설정 구성 창에서 

1. 인증서 유형: ACM에서 인증서 선택(권장) 을 선택하고

2. "인증서 이름"에서 인증서를 선택하여 

"다음: 보안 그룹 구성" 버튼을 클릭하여 다음으로 넘어갑니다. 

보안 그룹 구성 창에서는 기존의 보안 그룹을 사용할 수도 있고 새 보안 그룹을 생성할 수도 있지만 

저는 모든 작업에 새 보안그룹을 지정해주는 것이 맞다고 생각하여 새로 만들겠습니다. 

어떻게 해도 상관 없지만 필수 작업은 

1. 프로토콜 : TCP / 포트 범위 : 443 , 프로토콜 : TCP / 포트범위 : {사용할 포트}

아까 설정할 이 설정이 들어가야 통신을 할 수 있습니다. 

"다음: 라우팅 구성" 버튼을 클릭하여 다음으로 넘어갑니다. 

라우팅 구성 창에서는 세가지를 설정해야 합니다. 

1. 이름 : 임의의 라우팅 이름을 지정해줍니다. 

2. 대상 유형 : 세가지 선택지가 있어서 용도에 따라 설정을 해주면 됩니다. 

 - 저 같은 경우는 인스턴스로 설정해주었습니다. 나중에 혹시나 인스턴스를 재부팅 하게 되면 ip가 바뀔 경우를 대비해서 인스턴스 단위로 걸어주는 것이 좋다고 생각했습니다. 

3. 프로토콜은 HTTP로 하고 사용할 포트를 입력해주면 됩니다. 

"다음: 대상 등록" 버튼을 클릭하여 다음으로 넘어갑니다. 

대상 등록 창에서는 다음과 같은 작업을 합니다. 

1. 화면 하단에서 적용할 인스턴스를 선택합니다. 

2. HTTPS(443) 포트와 HTTP({사용할 포트})를 "등록된 항목에 추가" 버튼을 눌러 추가합니다. 

3. 위에 있는 빨간색 동그라미 영역에서 등록된 포트를 확인합니다. 

이제 "검토" 버튼을 누르고 검토 창에서 "생성" 버튼을 누르면 로드밸런서가 생성이 됩니다. 

 

마지막 작업은 지금 생성한 로드밸런서를 이전 포스팅(AWS SSL(HTTPS) 적용 방법 - 도메인 구입 Route 53(1))에서 맨들어준 도메인에 연결해주는 작업을 합니다. 

 

aws 서비스중 Route53 서비스로 이동합니다.

"호스팅 영역" 버튼을 클릭하여 이동합니다. 

호스팅 영역 창에서 도메인을 클릭합니다.

상단에 "레코드 생성" 버튼을 누른 후 다음 네가지 작업을 해야합니다. 

우측에서 순서대로 진행하시면 됩니다. 

1. 이름 지정(SSL을 적용한 상위 도메인에서 앞에 하위 도메인을 설정하는 작업)

 - ex : 상위 도메인 example.com

         하위 도메인 news

         도메인 : news.example.com

2. 별칭 : 예 클릭

3. 별칭 대상 : 생성한 로드밸런서 이름 선택

4. 대상 상태 평가 : 예 ("예"로 지정하게 될 경우 주기적으로 서버의 상태체크를 해줍니다.)

 

여기까지 하게 되면 도메인을 사용하여 SSL을 적용을 완료하게 됩니다. 

 

현재까지 작업을 완료하게 되면 aws에서 도메인단위로 HTTPS를 사용할 수 있게 해줍니다. 

저는 nodejs로 서버를 개발하기 때문에 nodejs를 기준으로 말씀 드리면 

기존 방식으로 하면 nodejs 서버 코드 안에서 키를 SSL 키를 찾아오는 코드를 설정해줘야 하지만 

위와같이 SSL 설정을 하면 서버에서 코드상으로 작업을 해줘야 하는 것이 없습니다. 

요청을 할때도 기존의 요청이 http://news.example.com이었다면 앞으로의 요청을 https://news.example.com으로 해주면 됩니다.