route-53

1 개의 포스트

aws

AWS Certificate Manager에서 ACME 지원으로 퍼블릭 TLS 인증서 발급 자동화 | Amazon Web Services (새 탭에서 열림)

AWS Certificate Manager(ACM)가 ACMEv2를 지원하면서 Certbot, cert-manager, acme.sh 등 기존 ACME 클라이언트로 Amazon Trust Services의 공인 TLS 인증서를 자동 발급·갱신할 수 있게 됐다. 인증서 수명이 2027년 100일, 2029년 47일까지 단축될 예정인 상황에서 수동 갱신의 운영 부담을 줄이고, 조직 차원의 인증서 발급·권한·감사를 ACM에서 통합 관리할 수 있다는 것이 글의 핵심이다. ## 인증서 자동화가 필요한 이유 - TLS 인증서는 만료 시 고객의 접속 오류와 서비스 중단을 일으킬 수 있다. - CA/Browser Forum 정책에 따라 최대 인증서 유효기간이: - 2027년 3월부터 100일 - 2029년부터 47일 로 단축될 예정이다. - 수동 발급과 갱신만으로는 짧아지는 인증서 주기를 안정적으로 관리하기 어렵다. - ACME는 인증서 발급, 갱신, 폐기를 자동화하는 표준 프로토콜이며 Let’s Encrypt를 비롯한 다양한 클라이언트가 지원한다. ## ACM의 ACME 지원 - ACM이 완전 관리형 ACME 서버 엔드포인트를 제공한다. - ACMEv2 호환 클라이언트를 사용해 공인 TLS 인증서를 발급할 수 있다. - Certbot - Kubernetes cert-manager - acme.sh - 기타 ACMEv2 클라이언트 - 인증서는 Amazon Trust Services에서 발급되며, 일반적인 브라우저와 운영체제에서 기본적으로 신뢰된다. - 기존에는 외부 CA와 ACM을 함께 사용해야 해 인증서 현황과 관리가 분산됐지만, 이제 ACM에서 ACME 발급 인증서까지 검색하고 관리할 수 있다. ## 중앙 집중식 권한 및 정책 관리 - PKI 관리자는 하나 이상의 ACME 엔드포인트를 만들어 조직의 인증서 사용을 중앙 관리할 수 있다. - IAM 역할과 ACME 계정을 연결해 클라이언트별 요청 권한을 세밀하게 제어할 수 있다. - 엔드포인트 수준에서 허용 도메인과 인증서 범위를 지정할 수 있다. - 도메인별로 다음 발급 범위를 선택할 수 있다. - Exact domain: 지정한 도메인만 허용 - Subdomains: `api.example.com` 같은 하위 도메인 허용 - Wildcards: `*.example.com` 같은 와일드카드 인증서 허용 - 와일드카드 발급을 제한하는 등 조직의 보안 정책을 일관되게 적용할 수 있다. - ECDSA와 RSA 등 허용할 키 유형도 중앙에서 제한할 수 있다. ## 도메인 검증과 역할 분리 - 도메인 검증은 엔드포인트 생성 시 PKI 관리자가 한 번 수행한다. - DNS 자격 증명은 관리자에게만 유지되며, 애플리케이션 소유자에게 배포할 필요가 없다. - 애플리케이션 소유자는 EAB 자격 증명으로 ACME 계정을 등록하고, 허용된 도메인 범위 안에서만 인증서를 요청한다. - Route 53을 사용하는 경우 ACM이 DNS 검증용 CNAME 레코드를 자동 생성한다. - 외부 DNS 제공업체를 사용하면 ACM이 제공하는 CNAME 레코드를 관리자가 직접 추가해야 한다. - 이 구조는 각 ACME 클라이언트가 개별적으로 DNS 검증을 수행하는 일반적인 구성보다 DNS 키 배포 위험을 줄인다. ## ACME 엔드포인트 설정 절차 - ACM 콘솔의 ACME certificates 페이지에서 `Create ACME endpoint`를 선택한다. - 엔드포인트 유형을 Public으로 설정한다. - 인증서 유형을 Public으로 설정한다. - 인증서 키 유형을 선택한다. - 기본값: ECDSA P-256 - 선택 가능: RSA 2048, ECDSA P-384 - 발급을 허용할 도메인과 도메인 스코프를 설정한다. - Route 53 Hosted Zone을 선택하거나 DNS 제공업체에 검증용 CNAME을 직접 등록한다. - DNS 검증 상태가 `Success`로 바뀌면 엔드포인트를 사용할 수 있다. ## External Account Binding(EAB) - EAB는 ACME 클라이언트가 ACM의 ACME 서버에 계정을 등록할 때 사용하는 인증 수단이다. - 다음 두 값으로 구성된다. - Key ID - HMAC Key - ACM 콘솔의 엔드포인트 상세 화면에서 EAB 자격 증명을 생성한다. - 생성한 EAB 자격 증명은 필요한 기간만큼만 유효하도록 만료 시간을 설정하는 것이 권장된다. - ACME 클라이언트가 EAB로 초기 계정을 등록하면, 이후에는 클라이언트가 생성한 비대칭 키 쌍으로 인증서 요청을 인증한다. - EAB 값은 클라이언트 설정에 필요하므로 안전하게 보관해야 한다. ## Certbot을 이용한 인증서 발급 - ACM 콘솔은 Certbot과 acme.sh용 CLI 예제를 제공한다. - Certbot은 다음과 같은 방식으로 실행할 수 있다. ```bash 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> ``` - `--server`에는 ACM ACME 엔드포인트 URL을 지정한다. - `--eab-kid`와 `--eab-hmac-key`에는 ACM에서 생성한 EAB 값을 입력한다. - `-d`로 발급 대상 도메인을 지정한다. - 클라이언트마다 EAB 설정 방식과 명령어 문법이 다를 수 있으므로 사용 중인 ACME 클라이언트의 문서를 확인해야 한다. ## 감사, 모니터링 및 만료 알림 - AWS CloudTrail이 ACME 인증서 요청을 기록해 감사 추적을 지원한다. - Amazon CloudWatch로 운영 지표를 모니터링할 수 있다. - ACM은 인증서 만료가 임박하면 알림을 보낸다. - 콘솔, API, ACME를 통해 발급된 인증서를 ACM에서 통합 검색할 수 있다. - 별도 인증서 라이프사이클 관리 제품이나 자체 정책 시스템을 구축하지 않고도 중앙 통제와 가시성을 확보할 수 있다. ## 실용적인 결론 조직에서 여러 서비스와 Kubernetes 클러스터의 인증서를 자동 관리해야 한다면 ACM ACME 엔드포인트를 활용하는 것이 유용하다. 특히 DNS 자격 증명은 PKI 관리자에게만 보관하고, 애플리케이션별로 제한된 도메인 스코프와 짧은 만료 기간의 EAB 자격 증명을 발급해 최소 권한 원칙을 적용하는 것이 권장된다.