Certificat Manager 를 통한 인증서 발급

AWS 서비스중 Certificate Manager 라는 서비스를 제공한다.

다른 사설 업체는 인증서 발급을 하는데 적게는 2-3만원에서 많게는 10만원 15만원의 비용을 청구하는데 비해서

아마존의 경우는 인증서를 무료로 발급해준다.

다만 불편한점은 발행유효기간이 1년뿐이라 직접 매년 갱신해주어야 한다는 점이다.

보안적으로는 더 유리할 수 있지만 아무래도 귀찮은건 사실인 것 같다. 공인인증서처럼 생각하고 매년 갱신한다고 마음먹고 쓰면 좋을 것 같다.

인증서 발급

인증서 요청 메뉴 -> 공인 인증서 요청을 선택한다.

도메인을 입력하고 순서대로 따라간다.

한 인증서에 서브 도메인들을 동시에 인증받을 수 있다.

www.도메인, admin.도메인, api.도메인 등 얼마든지 가능하고

또한 Asterisk 마크를 사용해서 와일드카드 인증서 역시 생성가능하다.

예를 들어 *.도메인 같은 형태이다.

https://s3.ap-northeast-2.amazonaws.com/laerdream.github.io/2020-01-04/ssl-0.jpg

1. DNS 검증을 하는 경우

DNS 구성파일을 내보내는 경우 DNS_Configuration.csv 파일을 단우로드 받아서

Record Name과 Record Value를 확인한 후 CNAME 을 하나 더 추가해주면 인증이 완료 된다.

인증 후 CNAME은 삭제 해도 무방하다.

2. 이메일 검증을 하는 경우

계정에 등록된 이메일로 승인 메일이 발송된다.

도메인 설정에 경험이 많이 없는 경우 이 방식이 조금 더 간편할 수 있다.

하지만 이메일 로그인 자체를 귀찮아 하는 경우도 있기 때문에 두 가지 방법 중 선호하는 방식으로 진행하면 되겠다.

https://s3.ap-northeast-2.amazonaws.com/laerdream.github.io/2020-01-04/ssl-1.jpg

로드 밸런스 설정

로드 밸런스의 필요성과 설정에 대해서는 다른 글을 통해 다시 다루겠지만 사실 로드 밸런스를 위한 복수의 인스턴스를 사용하지 않는

상황에서도 미래의 상황을 대비해서 미리 도메인을 로드 밸런스 DNS 로 연결해 두는 점이 나중을 위해 낫다고 생각한다.

EC2 서비스로 돌아가서 보안그룹에 HTTPS 프로토콜을 허용하고 로드 밸런스에도 확장된 보안그룹을 설정해준다.

https://s3.ap-northeast-2.amazonaws.com/laerdream.github.io/2020-01-04/ssl-2.jpg

https://s3.ap-northeast-2.amazonaws.com/laerdream.github.io/2020-01-04/ssl-3.jpg

Route 53 설정

Route 53 에서 www.도메인 과 같은 서브 도메인은 CNAME으로 같은 도메인을 바라보게 설정하고

나머지 프론트 페이지 또는 백엔드프로세스 등은 각각 생성한 로드밸런스 주소로 A 레코드 값을 변경해준다.

마치며

이렇게 하는 이유는 https 프로토콜에서는 Cross origin 설정이 별도로 되어있지 않은 일반적인 통신의 경우 반드시 https 프로토콜의 통신만을 허용하기 때문이다.

최근 안드로이드 정책도 변경됨에 따라서 https는 선택사양이 아닌 필수가 되었다고 생각한다.

이렇게 하면 쉽게 AWS https 통신을 위한 SSL 인증서 발급 및 도메인 연결을 완료 할 수 있다.