Post

[Cloud] ACM(AWS Certificate Manager)의 이해

AWS Certificate Manager(인증서 관리자)


  • 학습 목표 - AWS Certificate Manager(ACM)에 대해 이해합니다.
  • 인증서를 사용하는 이유를 확인합니다.
  • AWS Certificate Manager(ACM)을 생성하고 운영하는 방법을 알아봅니다.

AWS Certificate Manager(인증서 관리자)

  • AWS Certificate Manager(ACM)는 손쉽게 SSL/TLS 인증서를 프로비저닝, 관리 및 배포할 수 있도록 도와주는 서비스
  • 이 서비스를 사용하면 웹 애플리케이션, 웹 서버 등에서 HTTPS를 구현하는 데 필요한 SSL/TLS 인증서를 쉽게 관리할 수 있음.
  • AWS Certificate Manager를 사용하면 무료로 공인된 SSL/TLS 인증서를 생성 및 사용
  • ACM을 통해 생성된 인증서는 AWS의 다양한 서비스와 통합하여 사용할 수 있음

인증서와 SSL 통신

  • SSL 통신
    • SSL(Secure Socket Layer)란 보안 소켓 계층을 이르는 것으로, 인터넷 상에서 데이터를 안전하게 전송하기 위한 인터넷 암호화 통신 프로토콜
    • SSL은 응용 계층의 데이터를 암호화하여 전송

      Untitled

  • HTTP와 HTTPS(HTTP+SSL)의 주요 차이점

    기능HTTPHTTPS
    암호화데이터는 일반 텍스트(Plain text)로 전송. 보안에 취약데이터는 TLS 또는 SSL을 사용하여
    인증서 기반의 데이터 암호화 통신  
    PortTCP 80TCP 443
    URL 접두사http:// 로 시작https:// 로 시작
    보안평문 데이터를 기반으로 하기 때문에, 유저 정보와 같은 민감한 정보가 인터넷 상에 그대로 노출되어 수집 되거나 변조될 수 있음.인증서를 이용해서, 접속 사이트를 신뢰할 수 있는지 평가할 수 있고, 암호화된 데이터 통신으로 민감한 정보를 보호할 수 있음.

    Untitled

  • SSL 통신 과정

    [https://www.crocus.co.kr/1387](https://www.crocus.co.kr/1387)

    https://www.crocus.co.kr/1387

    (1),(2) 클라이언트가 서버에 접속하면 서버 인증서(서버의 공개키를 인증기관이 전자서명으로 인증한 것)를 전송받는다. (이때, 클라이언트 인증을 필요로 할 경우 클라이언트의 인증서를 전송하게 된다.)

    (3) 클라이언트는 받은 서버 인증서를 분석하여 신뢰할 수 있는 인증서인지를 검토한 후, 서버의 공개키를 추출한다.

    (4) 클라이언트가 세션키로 사용할 임의의 메세지를 서버의 공개키로 암호화하여 서버에 전송합니다.

    (5) 서버에서는 자신의 개인키로 세션키를 복호화하여 (6) 그 키를 사용하여 (7)대칭키 암호방식으로 메시지를 암호화하여 클라이언트와 통신하게 됩니다.(https://)

AWS Certificate Manager를 사용하는 이유

  • 간소화된 관리: ACM은 AWS 서비스에 대한 SSL/TLS 인증서 생성, 저장 및 관리의 복잡성을 처리합니다.
  • 원활한 통합: Elastic Load Balancing, Amazon CloudFront, AWS Elastic Beanstalk 및 Amazon API Gateway와 같은 다른 AWS 서비스와 쉽게 통합됩니다.
  • 자동 갱신: ACM은 관리되는 인증서를 자동으로 갱신합니다. 즉, 인증서를 수동으로 추적하고 갱신할 필요가 없습니다.
  • 보안: 민감한 데이터를 보호하는 데 중요한 HTTPS를 활성화하여 웹사이트나 애플리케이션의 보안을 강화합니다.
  • 비용 효율적: 적격 AWS 서비스와 함께 사용하기 위해 ACM을 통해 SSL/TLS 인증서를 프로비저닝하는 데 추가 비용이 부과되지 않습니다.

AWS Certificate Manager 설정 순서

  1. 인증서 요청:
    • AWS Certificate Manager로 이동 → “인증서 요청”을 선택하고 필요한 인증서 유형(공용 또는 개인)을 선택.
    • 인증서 기반 서비스를 진행할 도메인 이름을 입력(하위 도메인을 포함하는 와일드카드 인증서를 요청 가능)
  2. 인증서 유효성 검사: 검증 방법을 선택
    • DNS 검증 또는 이메일 검증. DNS 검증이 Route 53에서 관리하는 도메인에 인증서를 더해서 검증하므로 더 간단.
    • 검증 및 발급이 완료되면 ACM에서 인증서를 사용할 수 있음.
  3. AWS 서비스로 ACM 구성:
    • 인증서 기반의 서비스 구성(예: 보안그룹 설정, ALB 구성, 웹서비스 연결 허용 등)
  4. 인증서 상태 모니터링 및 관리: ACM은 인증서 상태를 모니터링할 수 있는 대시보드를 제공. 필요한 경우 인증서 갱신이나 기타 중요한 이벤트에 대한 알림 설정.
  5. 자동 갱신: 도메인 검증 기록이 그대로 유지되고 도메인 소유권이 변경되지 않은 경우 인증서가 만료되기 전에 자동으로 갱신을 시도함.

LAB: ACM 인증서 생성 및 설정하기

  • 인증서 생성
    • AWS Certificate Manager → [인증서 요청]
      • 퍼블릭 인증서 요청
        • 완전히 정규화 된 도메인 이름: weplat.store
        • 인증서에 다른이름 추가 : *.weplat.store
      • 검증 방법: DNS 검증 - 권장
      • 키 알고리즘: RSA 2048
    • 인증서 → 새로 생성된 인증서 선택 후 → 도메인: [Route 53에서 레코드 생성] 선택
      • Amazon Route 53에서 DNS 레코드 생성 → 레코드 생성

        image.png

        image.png

      • Route53 에서 호스팅 영역에 생긴 CNAME 레코드 확인.

        • 이 CNAME 을 통해 도메인에 적용 가능한지 검증함.

        image.png

    • ACM 서비스 화면의 인증서 상태가 “발급됨”으로 전환될 때까지 대기.

      image.png

      image.png

  • 인증서 서비스에 연결하기 : ALB에 발급된 인증서를 연결해서 http가 아닌 https 서비스가 가능하도록 구성
    • 로드벨런서
      • (https 의 443 포트 허용을 위한 리스너 추가) web-alb 선택
        • 리스너 및 규칙: 리스너 추가
        • 리스너 세부 정보
          • 프로토콜: HTTPS
          • 포트: 443
          • 라우팅 액션: 대상 그룹으로 전달
          • 대상 그룹: weplat-ap2-web-alb-tg
        • 보안 리스너 설정
          • 보안 정책: 모든 보안 정책 / ELBSecurityPolicy-TLS13-1-2-2021-06 (권장)
          • 기본 SSL/TLS 서버 인증서
            • 인증서 소스: ACM에서
            • 인증서(ACM에서): weplat.store
      • (기존에 있는 http로 연결 요청시 https로 리디렉션 되도록 구성) HTTP:80 리스너 선택 후 [리스너 관리] - 리스너 편집
        • 리스너 구성은 원래값 HTTP , 포트 80을 수정하지 않고 아래 라우팅 액션을 수
        • 라우팅 액션: URL로 리디렉션
          • 프로토콜: HTTPS
          • 포트: 443
    • 인증서 적용 확인하기. 브라우저: https://weplat.store 또는 http://weplat.store

      Untitled

리소스 제거

  • Route53
  • ALB
  • ACM 삭제
  • EC2
  • VPC
This post is licensed under CC BY 4.0 by the author.

Comments powered by Disqus.