기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
ACME를 통해 인증서 발급
PKI 관리자가 도메인 검증 및 외부 계정 바인딩으로 ACME 엔드포인트를 설정한 후 애플리케이션 소유자는 ACME 클라이언트를 사용하여 인증서를 발급할 수 있습니다. 이 섹션에서는 발급 흐름을 설명하고, Certbot을 사용하는 간단한 예제를 제공하고, ACME 발급 인증서가 ACM에 어떻게 표시되는지 설명합니다.
발급 작동 방식
ACME 인증서 발급 흐름은 RFC 8555 프로토콜을 따릅니다.
-
계정 등록: ACME 클라이언트는 EAB 자격 증명(키 ID 및 MAC 키)을 사용하여 계정을 등록합니다. ACME 클라이언트당 일회성 단계입니다.
-
인증서 순서: 클라이언트가 인증서의 도메인 이름을 지정하는 순서를 생성합니다.
-
권한 부여: ACME 서버는 사전 구성된 도메인 검증을 확인합니다. 엔드포인트는
PRE_APPROVED권한 부여를 사용하기 때문에 클라이언트에서 라이브 챌린지가 필요하지 않습니다. -
완료: 클라이언트가 CSR(인증서 서명 요청)을 제출하여 주문을 완료하고 ACM이 인증서를 발급합니다.
-
다운로드: 클라이언트가 발급된 인증서 체인을 다운로드합니다.
중요
프라이빗 키는 ACME 클라이언트에 의해 생성되며 클라이언트 시스템을 벗어나지 않습니다.
예: Certbot으로 인증서 발급
이 예제에서는 Certbot을 사용하여 ACME 계정을 등록하고 인증서를 요청하는 방법을 보여줍니다.
사전 조건
-
ACTIVE상태인 ACME 엔드포인트(디렉터리 URL이 있음) -
원하는 도메인의
VALID상태인 하나 이상의 도메인 검증 -
PKI 관리자의 EAB 자격 증명(키 ID 및 MAC 키)
-
시스템에 설치된 Certbot
계정을 등록하고 인증서를 요청하려면
중요
ACM ACME 엔드포인트를 통한 인증서 발급에는 최대 2분이 걸릴 수 있습니다. 인증서가 전송되기 전에 클라이언트의 제한 시간이 초과되지 않도록 ACME 클라이언트의 발급 제한 시간을 120초(2분) 이상으로 구성합니다. 많은 ACME 클라이언트의 기본값은 30~90초이므로 충분하지 않습니다.
다음 명령을 실행합니다.
certbot certonly \ --standalone \ --non-interactive \ --agree-tos \ --emailuser@example.com\ --server https://acm-acme-enroll.region.api.aws/00000000-0000-0000-0000-000000000000/directory \ --eab-kidAAABBBCCC111222333\ --eab-hmac-keybase64encodedmackey\ --issuance-timeout 120 \ --domainwww.example.com
발급에 성공하면 Certbot은 인증서와 프라이빗 키를 기본 위치(일반적으로 )에 저장합니다/etc/letsencrypt/live/.www.example.com/
ACM의 ACME 인증서
ACME를 통해 발급된 인증서는 표준 ACM 인증서 ARN을 자동으로 수신하고 ACM 인증서 인벤토리에 표시됩니다. 그러나 ACME에서 발급한 인증서는를 통해 발급한 인증서와 중요한 차이가 있습니다RequestCertificate.
주요 차이점
-
프라이빗 키는 클라이언트 측: 인증서 프라이빗 키는 ACME 클라이언트에 의해 생성되고 저장됩니다. ACM은 프라이빗 키에 액세스할 수 없습니다.
-
통합 서비스에 바인딩할 수 없음: AWS 에는 프라이빗 키가 없으므로 ACME 인증서를 Elastic Load Balancing, CloudFront 또는 API Gateway와 함께 사용할 수 없습니다.
-
기본 목록 출력에 없음: ACME 인증서는 기본적으로
ListCertificates결과에 표시되지 않습니다. 포함할 값이 있는CertificateKeyPairOrigins필터를ACME포함해야 합니다.는 기본적으로 ACME 인증서를SearchCertificates반환합니다. -
ACM을 통해 내보낼 수 없음: 클라이언트가 이미 인증서를 가지고 있으므로
ExportCertificateAPI를 사용할 수 없습니다. -
ACME를 통한 해지만 해당: ACME 엔드포인트의 revoke-cert URL을 사용합니다. ACM
RevokeCertificateAPI는 ACME에서 발급한 인증서에는 작동하지 않습니다. -
갱신은 클라이언트 기반입니다. ACM은 ACME 인증서를 자동 갱신하지 않습니다. ACME 클라이언트는 기존 인증서가 만료되기 전에 새 인증서를 요청해야 합니다.
ACME 인증서 보기
ACM 콘솔에서 필터를 사용하여 ACME 키 페어 오리진이 있는 인증서를 포함합니다. 인증서 찾기에 대한 자세한 내용은 섹션을 참조하세요인증서 검색.
ACME 인증서를 나열하려면(AWS CLI)
CertificateKeyPairOrigins 필터와 list-certificates 함께를 사용합니다.
aws acm list-certificates \ --certificate-key-pair-origins ACME
ACME 인증서를 검색하려면(AWS CLI)
CertificateKeyPairOrigin 필터와 search-certificates 함께를 사용하여 추가 기준으로 ACME 인증서를 찾습니다.
aws acm search-certificates \ --filter-statement '{"Filter": {"AcmCertificateMetadataFilter": {"CertificateKeyPairOrigin": "ACME"}}}'
AcmeEndpointArn 또는에서 필터링하여 특정 엔드포인트 또는 ACME 계정을 통해 발급된 인증서를 검색할 수도 있습니다AcmeAccountId.
인증서 세부 정보를 보려면(AWS CLI)
다음 명령을 실행합니다.
aws acm describe-certificate \ --certificate-arn arn:aws:acm:region:account-id:certificate/certificate-id
ACME 인증서 취소
ACME를 통해 발급된 인증서를 취소하려면 ACME 프로토콜의 revoke-cert 엔드포인트를 사용합니다. ACME 클라이언트가 이를 처리합니다.
참고
ACME에서 발급한 인증서는 ACM RevokeCertificate API를 사용하여 취소할 수 없습니다. 인증서를 발급한 ACME 엔드포인트를 통해 이러한 인증서를 취소해야 합니다.
다음 예제에서는 Certbot을 사용한 해지를 보여줍니다.
certbot revoke \ --cert-path /etc/letsencrypt/live/www.example.com/cert.pem \ --server https://acm-acme-enroll.region.api.aws/00000000-0000-0000-0000-000000000000/directory
취소는 클라이언트의 외부 계정 바인딩과 연결된 IAM 역할에 의해 승인되므로 표준 acm:RevokeCertificate 작업에 적용되는 것과 동일한 IAM 정책 및 SCPs 여기에 적용됩니다. 필수 IAM 역할 구성에 대한 자세한 내용은 섹션을 참조하세요ACME 인증서 자동화를 위한 IAM.
인증서 갱신
ACME 인증서는 ACM에 의해 갱신되지 않습니다. ACME 클라이언트는 현재 인증서가 만료되기 전에 새 인증서를 요청할 책임이 있습니다. 대부분의 ACME 클라이언트(Certbot 포함)는 예약된 작업(예: cron 작업 또는 시스템 타이머)을 통한 자동 갱신을 지원합니다.
갱신 간 ARN 안정성
ACME 클라이언트가 인증서를 갱신하면 ACM은 새 발급이 기존 인증서의 갱신인지 아니면 개별 인증서인지 결정합니다. 발급이 동일한 인증서 메타데이터(예: 도메인 이름 및 키 알고리즘)가 있는 동일한 ACME 계정에서 발생하는 경우 ACM은 새 인증서 ARN을 생성하는 대신 기존 인증서 ARN을 업데이트합니다. 이렇게 하면 갱신 기간 동안 ARN이 안정적으로 유지되므로 추적 및 자동화가 간소화됩니다.
원본 인증서가 ACM에서 제거된 경우(예: 1년 이상 전에 만료되어 자동으로 삭제된 경우) 동일한 메타데이터를 사용한 후속 발급으로 새 인증서 ARN이 생성됩니다.
Certbot 자동 갱신 예제(일반적으로 Certbot 설치 중에 자동으로 구성됨):
certbot renew --quiet