ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • AWS Certificate Manager
    AWS 2018. 4. 1. 21:55




    - SSL/TLS 인증 서비스



    간간히 도메인 주소창에 왼쪽 에 녹색 열쇠가 표시되는 경우가 보인다.

    "안전함" 이라고 적혀져 있던데 뭐가 안전하다는 걸까?

    바로 SSL/TLS 인증을 받고 있다는 뜻이다. 이것은 고객과 웹 사이트 간에 인증과 신뢰를 제공하기 위한 전자 문서이다.

    SSL/TLS는 중요한 정보를 교환 할때마다 필요로 하다. 예를 들어 사이트가 PCI-DSS, FISMA과 같이 규정 준수를 해야 하는 경우 혹은 의료 데이터 전송을 위한 HIPAA 규정에서도 SSL/TLS를 이용하도록 하고 있다.




    - AWS ACM (인증 관리자 - Amazon Certificate Manager)



    웹서버를 만들기 위해 필요로 하는 것중 하나인 SSL/TLS 인증서.

    AWS에서 지원해주는 ACM 을 통해 HTTPS 프로토콜을 가진 서버를 만들어 보자.


    ACM의 장점을 먼저 나열해 보자면 


    1. AWS ELB, Route53을 이용하여 인스턴스 하나하나 적용했던 SSL이 한번에 여러 인스턴스에 적용할 수 있는 기능을 제공해준다.


    2. 도메인 소유자에게 이메일 형식으로 인증을 받아서 빠르게 승인만 하면 발급된 인증서를 사용할수 있다.


    3. 매번 생각해야하는 인증서 갱신일을 기억해두었다가 또는 자동화시켜야 하는 번거로운 작업을 안해도 자동갱신이 된다.


    4. 비용이 무료이다.


    -> 다만 아쉬운 점은 작은 소형의 서버를 운영하는 사람에게는 Route53 과 ELB가 필요가 없을텐데 SSL을 적용하기 위해서 도메인이 필수적으로 있어야 하기 때문에 일단 도메인을 사야되고 적용하려면 routing을 해주는 Route53을 이용해서 도메인을 연결해주어야 한다.



    자, SSL 인증을 받기 위해 3개의 준비물이 필요로 하다.


    첫번째 , 자기 소유의 도메인이 필요로 하다. 


    두번째 , ELB나 단일 instance가 필요로 하다 . 왜냐하면 소유의 도메인을 A record에 등록시켜서 연결되게끔 하기위해서이다.


    세번째 , Route53에서 Host zone이 필요로 하다. Route53을 통해 소유의 도메인을 등록 및 연결을 위해서이다.


    준비물은 이것을 됬고 대략적인 순서이다.


    1. 도메인 구입 -> 2. 구입한 도메인과 AWS route53 연결 -> 3. AWS ACM을 통해서 구입한 도메인의 SSL Certificate 를 발급 -> 4. ELB에 SSL Listener 생성 -> 5. 최종 SSL 적용



    1. 도메인 구입


    대표적인 도메인 구입사이트 중 하나이다. https://www.gabia.com/




    간단한 회원가입과 원하는 도메인을 검색하여 결제하면 된다. ( 생각보다 간단해서 놀람... )

    가격은 보통 1개의 도메인을 1년동안 사용하려고 할시 13,500원이다.

    구입하고 난뒤 My 가비아 창에 결제된 나의 도메인의 목록이 있다.

    확인한후 다음 단계로 넘어가보자.




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


    AWS에 들어가서 Route53 서비스(확장가능한 DNS 및 도메인 이름 등록)를 선택한 후, 


    왼쪽 메뉴바의 Hosted zones -> 'Create Hosted Zone' -> Domain Name 작성 -> 'create' 순으로 도메인을 입력하고 생성한다.


    만든 Hosted Zones을 선택한후 'Go to Record Sets'에 Type NS(name server) 에 등록된  Value(값) 'ns-XXXXXXX..' 네개를 복사한다.





    그리고 복사한 주소 4개를 도메인을 가비아에 접속하여 My가비아 내 도메인의 서비스 정보중 관리툴 바로가기 에서 네임 서버 설정에 

    추가한다.



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


    이제 도메인에 대한 ACM에서 SSL 증명서를 발급받아야 한다. 

    AWS 에서 Certificate Manager 을 선택한후 인증서 요청을 한다.


    도메인 이름 추가에는 Route53에서 등록했던 도메인 이름을 입력하고 다음으로 간다. 


    다음 화면에서 검증 방법으로 DNS 검증 , 이메일 검증 둘중에 어떤 방법으로 검증할 것인지 택하는 것인데


    먼저 DNS 검증을 하게 되면 Route53에 등록한 도메인에 지정된 CNAME(Canonical Name)레코드를 추가하라는 메세지와 함께 '추가'버튼을 누르면 자동적으로 인증서가 갱신이되어 발급 완료 상태가 된다


    이메일 검증을 하게 되면  등록된 도메인 이름을 가진 소유자에게 AWS에서 증명서에 대한 확인 메일을 보낸다.


     이 메일은 가비아에서 구매하려고 계정을 만들었때 입력했던 메일로 가게 되며 확인 해보면 다음과 같은 메일이 오며 빨간 박스 부분을 클릭하고 난후 'I Approve'를 누르면 정상적으로 SSL Certificate 가 발급이 완료된다.






    4. ELB에 SSL Listener 생성


    <-- 이미 ELB와 거기에 연결된 EC2 인스턴스 하나가 있다는 가정하에 진행하며 ELB와 EC2의 보안그룹의 인바운드 규칙으로 HTTP, HTTPS, SSH 를 추가한다. -->


    ELB 에 Listener 창에서 HTTPS 프로토콜을 추가한후 SSL 인증서에 'Change' 를 누른다.


    누르면 Select Certificate라는 것이 나오는데 'Choose an existing certificate from AWS Cerstificate Manager (ACM)'을 선택하고, 밑에 Certificate를 등록한 도메인의 Certificate로 등록을 하고 'Save'를 누른다.


    그리고 적용된 화면의 모습이다.




    5. 최종 SSL 적용


    마지막으로 Route53에 등록해놨던 도메인을 Route53에서 ELB와 연결을 하면 된다.


    여기서 중요한 것은 도메인이 입력되었을때, 연결되어질 Instance 의 IP 나 ELB의 도메인을 A record로 입력해서 저장하는것이다.


    다시 Route53 서비스로 이동하여 'Go to Record Sets' 을 누른후 'Create Record Set'을 눌러 새로운 레코드를 만든다.


    Type 은 "A - IPv4 address" 으로 적용하고  


    Alias 을 'yes'로 선택하고


    Alias Target 을 아까 설정을 완료했던 로드밸런서의 도메인을 선택하고 'Create'을 누르면 된다.






    그리고 난뒤 https://handam.kr 도메인으로 정상적으로 서비스가 되는 것을 확인 할수 있다.



    -----------------------------------------------------------------------------------------------------------------------------------------------


    *ELB 와 EC2 연결 과정에서 생기는 오류 중 하나


    문제발생:

    "Instance 상태 - OutOfService -  Instance has failed at least the Unhealthy Threshold number of health checks consecutively"



    원인분석:

    Health Check 을 위해  Ping Target(default : /index.html) 에 HTTP GET 요청으로 보낼때 200(정상적으로 수신) 이 아닌 다른 응답코드로 수신.

    보통 index.html 이 등록된 인스턴스에 없어서 생기는 경우이다.


    해결방안:

    Ping Target 설정을 '/index.html' -> '/' 바꾸거나 등록된 인스턴스에 index.html 을 만들면 해결된다.





    http://interconnection.tistory.com/m/21


    'AWS' 카테고리의 다른 글

    AWS&Node.js 서버 구동  (0) 2018.04.28
    AWS 프리 티어  (0) 2018.04.18
Designed by Tistory.