Amazon Web Services 한국 블로그
AWS Certificate Manager, ACME 지원 기반 공인 TLS 인증서 발급 자동화
애플리케이션의 TLS 인증서를 관리하는 경우, 인증서가 만료되고 만료 후 고객에게 오류가 발생하거나 서비스가 중단되는 문제를 겪을 수 있습니다. 인증서 유효 기간이 짧아짐(인증 기관(CA)/브라우저 포럼은 최대 유효 기간을 2027년 3월부터 100일로, 2029년까지 47일로 단축하도록 의무화하고 있음)에 따라, 수동 갱신 프로세스를 사용할 수 없게 되었습니다. 따라서 자동화를 사용해야 합니다.
자동 인증서 관리 환경(ACME)은 사람의 개입 없이 TLS 인증서를 요청, 갱신 및 해지할 수 있는 개방형 프로토콜입니다. Let’s Encrypt의 기본 프로토콜과 동일하며, 모든 플랫폼에서 수십 개 클라이언트의 지원을 받습니다.
오늘 AWS Certificate Manager (ACM)의 공인 인증서에 대한 ACME 지원을 발표합니다. ACM은 이제 Certbot, Kubernetes용 인증서 관리자, acme.sh 또는 이미 사용 중인 다른 클라이언트 등 모든 ACMEv2 호환 클라이언트와 함께 작동하는 완전 관리형 ACME 서버 엔드포인트를 제공합니다. 표준 ACME 프로토콜을 통해 Amazon Trust Services에서 공인 TLS 인증서를 발급할 수 있습니다.
지금까지는 ACME 프로토콜을 사용하여 인증서 관리 자동화를 원하면 ACM과 함께 외부 인증 기관에 의존해야 했기 때문에 가시성이 분산되어 왔습니다. 일부 인증서는 ACM에 있고 다른 인증서는 중앙 대시보드에 있지 않고 외부에서 관리되었습니다. PKI 관리자에게는 인증서를 요청할 수 있는 사용자나 허용된 도메인을 제어할 수 있는 기능이 제한적이었습니다.
ACM의 ACME 지원을 통해 이제 조직 전체의 ACME 인증서 사용을 중앙에서 관리하고 모니터링할 수 있는 관리형 ACME 엔드포인트를 하나 이상 설정할 수 있습니다.
PKI 관리자는 기본 인증서 발급을 넘어서는 중앙 집중식 제어 기능을 사용할 수 있습니다. IAM 역할을 ACME 계정에 바인딩하여 각 클라이언트가 요청할 수 있는 도메인에 대한 세분화된 액세스 제어를 할 수 있습니다. 엔드포인트 수준에서 도메인 범위를 정의하여 조직 전체에 정책을 적용할 수 있습니다. 또한 한 곳에서 중앙 집중식 모니터링과 가시성을 확보할 수 있습니다. AWS CloudTrail은 감사 추적을 위해 모든 인증서 요청을 기록하고, Amazon CloudWatch는 운영 지표를 추적하며, 인증서 갱신이 임박하면 ACM이 만료 알림을 보냅니다. PKI 팀은 ACM을 사용하여 ACM 콘솔, API 호출 또는 ACME를 통해 발급한 모든 인증서를 검색할 수 있습니다.
작동 방식
시작하려면 먼저 전용 ACME 엔드포인트를 설정하고, 외부 계정 바인딩(EAB)을 사용하여 권한 제어를 구성하고, 엔드포인트에서 인증서를 발급할 수 있는 도메인을 확인하며, 기존 ACME 클라이언트가 새 엔드포인트를 지정하도록 해야 합니다.
도메인 확인 단계는 중요합니다. 즉, 인증서 발급을 설정할 수 있는 사람과 인증서를 요청할 수 있는 사람을 구분합니다. PKI 관리자는 관리자가 보유한 DNS 자격 증명을 사용하여 엔드포인트 수준에서 도메인을 한 번 검증합니다. 인증서가 필요한 애플리케이션 소유자는 절대 DNS를 다루지 않습니다. 이들은 EAB 자격 증명으로 등록되며, 엔드포인트는 요청이 허용된 도메인과 범위를 적용합니다. 즉, DNS 키를 함께 배포하지 않고도 조직 전체에 인증서 자동화를 광범위하게 배포할 수 있습니다.
이 데모는 AWS 인증서 관리자 콘솔의 ACME 인증서 페이지에서 시작합니다.
이 계정에는 이미 몇 개의 엔드포인트와 인증서가 있습니다. 새 엔드포인트와 인증서를 만드는 방법을 처음부터 안내해 드리겠습니다. 먼저 ACME 엔드포인트 생성을 선택합니다.
엔드포인트에 이름을 지정합니다. 엔드포인트 유형은 퍼블릭입니다. ACME 클라이언트는 퍼블릭 인터넷을 통해 연결됩니다. 인증서 유형은 퍼블릭입니다. 인증서는 Amazon Trust Services에서 발급하며 브라우저와 운영 체제에서 기본적으로 신뢰합니다. 인증서 키 유형의 경우 기본 ECDSA P-256을 유지합니다. 고객이 필요로 하는 경우 RSA 2048과 ECDSA P-384 또한 사용할 수 있습니다.
아래로 스크롤하여 도메인을 구성합니다. 도메인 이름을 입력하고 도메인 범위를 선택합니다. 범위는 ACME 클라이언트가 이 도메인에 대해 요청할 수 있는 인증서 패턴을 정확히 제어합니다. Exact 도메인만 선택하면 클라이언트는 해당 특정 도메인 이름에 대한 인증서만 요청할 수 있습니다. 하위 도메인을 추가하면 모든 하위 도메인(예: api.example.com 또는 dev.example.com)에 대한 인증서가 허용됩니다. 와일드카드를 추가하면 와일드카드 인증서(*.example.com)를 사용할 수 있습니다. 범위를 선택하지 않은 상태로 두면 ACME 요청이 유효하더라도 이 엔드포인트를 사용하는 클라이언트가 해당 유형의 인증서를 요청하지 못하게 됩니다. 프로덕션 엔드포인트의 경우, 더 엄격한 보안 태세를 적용하기 위해 와일드카드는 선택하지 않고 Exact 도메인 및 하위 도메인만 활성화할 수 있습니다.
또한 드롭다운 메뉴에서 Amazon Route 53 호스팅 영역을 선택합니다. 그러면 ACM이 도메인 검증에 필요한 DNS CNAME 기록을 자동으로 생성하므로 수동으로 수행할 필요가 없습니다. 내 도메인이 Route 53 외부에서 호스팅되는 경우, 대신 DNS 공급자에서 제공된 CNAME 기록을 수동으로 생성합니다. 이는 각 클라이언트가 자체 도메인 검증을 독립적으로 처리하는 일반적인 ACME 설정과는 상당한 차이가 있습니다.
이러한 중앙 집중식 제어를 통해 PKI 관리자는 한 곳에서 도메인을 인증하고, 클라이언트가 요청할 수 있는 인증서 유형(ECDSA 또는 RSA)을 제한하고, 와일드카드 발급을 추가로 제한할 수 있습니다. 이러한 거버넌스 기능이 기본적으로 제공되므로 별도의 인증서 수명 주기 관리 제품을 구매하거나 사용자 지정 정책 계층을 직접 구축하는 데 투자할 필요가 없습니다. 두 경우 모두 상당한 비용과 운영 오버헤드가 발생합니다.
ACME 엔드포인트 생성을 선택합니다.
몇 초 후 엔드포인트가 생성됩니다. 콘솔에는 다음 단계가 포함된 설치 진행률 트래커가 표시됩니다. 내 도메인이 “검증 중” 상태로 표시됩니다. 검증 방법은 DNS 검증으로, ACM은 특정 CNAME 기록을 검사하여 사용자가 도메인을 제어하는지 확인합니다. 생성 중에 Route 53 호스팅 영역을 선택했기 때문에 Route 53에서 기록 생성을 선택하여 ACM이 DNS 검증을 자동으로 처리하도록 합니다.
몇 초 안에 검증이 완료되고 상태가 성공으로 변경됩니다.
이제 외부 계정 바인딩(EAB) 자격 증명을 생성해야 합니다. EAB 자격 증명은 ACME 클라이언트가 ACME 서버에 계정을 등록할 수 있도록 하는 키 식별자 및 HMAC 키 쌍입니다. 계정이 등록되면 클라이언트는 자체 비대칭 키 쌍을 생성하여 이후의 모든 인증서 요청을 인증하는 데 사용합니다. 엔드포인트 세부 정보 페이지에서 외부 계정 바인딩 탭을 선택한 다음 EAB 생성을 선택합니다. 자격 증명에 이름을 지정하고 만료 시간을 선택해 설정합니다. 클라이언트 등록을 완료하는 데 필요한 기간보다 길지 않게 설정하는 것이 좋습니다.
EAB 자격 증명 생성을 선택하면 콘솔에 키 ID와 HMAC 키가 표시됩니다. ACME 클라이언트를 구성하는 데 필요하기 때문에 이 값을 기록해 둡니다. 이제 설정 진행 상황에 네 개의 녹색 체크 표시가 보입니다.
인증서를 요청할 준비가 되었습니다. 엔드포인트 세부 정보 페이지에서 CLI 참조 섹션을 엽니다. 콘솔은 Certbot과 acme.sh 모두에 대해 바로 사용할 수 있는 명령 예시를 제공합니다. Certbot 명령을 복사하고 certbot/certbot 이미지를 사용하여 컨테이너 내에서 실행합니다.
certbot certonly --standalone --non-interactive --agree-tos \
--email <EMAIL> \
--server https://acm-acme-enroll.us-east-1.api.aws/<ENDPOINT_ID>/directory \
--eab-kid <EAB_KID> \
--eab-hmac-key <EAB_HMAC_KEY> \
--issuance-timeout <ISSUANCE_TIMEOUT> \
-d <DOMAIN>
플레이스홀더를 엔드포인트 URL, EAB 자격 증명 및 도메인 이름으로 대체합니다. --eab-kid 및 --eab-hmac-key 인수는 앞서 생성한 외부 계정 바인딩 자격 증명을 사용하여 Certbot이 ACME 엔드포인트에 등록하는 방법입니다. 각 ACME 클라이언트에는 이 단계에 대한 고유한 구문이 있으므로 정확한 플래그는 클라이언트 설명서를 참조합니다.
Certbot은 ACME 엔드포인트에 접속하여 Amazon Trust Services에서 서명한 유효한 인증서를 반환합니다.
설치하기 전에 openssl을 사용하여 인증서를 확인합니다.
이제ACME 인증서 탭 아래의 ACM 콘솔에서 인증서와 함께 콘솔 또는 API를 통해 발급한 모든 인증서를 볼 수 있습니다.
가용성 및 요금
AWS Certificate Manager의 ACME 지원은 현재 모든 상용 AWS 리전에서 이용할 수 있으며, 추후 AWS GovCloud(미국), 중국 리전 및 AWS European Sovereign Cloud 파티션에서도 이용할 수 있습니다.
가격은 발급 시 각 인증서에 포함된 도메인당 책정되며, 정규화된 도메인 이름 및 와일드카드의 경우 가격이 다릅니다. 용량 티어는 AWS 계정에서 매월 발급되는 모든 인증서의 총 도메인 발생 횟수를 기준으로 계산됩니다. 자세한 내용은 ACM 요금 페이지를 참조하세요.
시작하려면 AWS 콘솔의 ACM 섹션을 방문하거나 설명서를 읽어 보세요.










