12.3 AWS Certificate Manager (ACM) & Private CA Architecture
Key Takeaways
ACM public certificates are valid for 198 days; ACM renews DNS- and email-validated public certificates starting 45 days before expiry (private certificates 60 days), and DNS validation renews without human action.
Standard ACM public certificates can't be exported and attach to integrated services such as ALB, NLB, CloudFront (certificate in us-east-1), and API Gateway; exportable public certificates, available since June 2025 for a fee, must be marked exportable when requested.
AWS Private CA establishes managed private PKI hierarchies comprising root and subordinate (issuing) CAs, supporting exportable certificates for EC2 instances, containers, on-premises servers, and mutual TLS (mTLS).
AWS Private CA publishes CRLs to an S3 bucket through the acm-pca.amazonaws.com service principal and also offers managed OCSP; clients must be able to reach the CRL, often through CloudFront with Block Public Access kept on.
AWS Resource Access Manager (RAM) enables cross-account private CA sharing across an AWS Organization, allowing member accounts to request and bind private certificates while centralizing CA administrative governance.
12.3 AWS Certificate Manager (ACM) & Private CA Architecture
Securing data in transit across modern enterprise architectures requires pervasive TLS/SSL encryption across all network boundaries—from internet-facing content delivery networks down to internal microservice-to-microservice remote procedure calls. Establishing and maintaining a secure Public Key Infrastructure (PKI) has historically introduced substantial administrative friction, including manual certificate generation, key management risks, complex certificate revocation list maintenance, and catastrophic application outages caused by unexpected certificate expiration.
AWS resolves these PKI challenges through two integrated services: AWS Certificate Manager (ACM) and AWS Private CA (formerly ACM Private CA). ACM manages the automated provisioning, validation, and renewal of public and private X.509 certificates for integrated AWS services, while AWS Private CA enables organizations to build highly available, enterprise-grade private certificate authority hierarchies shared across multi-account AWS Organizations.
AWS Certificate Manager (ACM) Public Certificates
AWS Certificate Manager provides public SSL/TLS certificates at no additional cost for use with AWS-managed services. Public ACM certificates are signed by Amazon Trust Services (ATS), a globally recognized Certificate Authority trusted by all modern web browsers, operating systems, and mobile devices.
The Non-Exportable Key Security Boundary
Core Security Principle: A standard public certificate from ACM cannot be exported. Its private key stays inside ACM, so you can't install it on an Amazon EC2 instance running Apache, an on-premises web server, or an external container host.
Exportable public certificates (available since June 2025) are the exception. You choose export when you request the certificate and pay a per-certificate fee; ExportCertificate then returns the certificate, chain, and a passphrase-encrypted private key. ACM renews them, and you re-export and reinstall after each renewal. Existing certificates can't be converted to exportable ones.
Standard (non-exportable) public ACM certificates bind to integrated AWS resources:
- Elastic Load Balancing: Application Load Balancers (ALB), Network Load Balancers (NLB) with TLS listeners.
- Amazon CloudFront: Global content delivery network distributions.
- Amazon API Gateway: REST APIs, HTTP APIs, and WebSocket APIs using custom domain names.
- AWS App Runner and AWS Elastic Beanstalk.
The CloudFront Regional Placement Rule
A critical requirement frequently tested on the AWS Security Specialty exam is regional certificate placement for edge services:
- To attach an ACM SSL/TLS certificate to an Amazon CloudFront distribution, the certificate MUST be requested or imported in the
us-east-1(US East - N. Virginia) region. - Certificates provisioned in any other AWS region (e.g.,
us-west-2oreu-west-1) cannot be associated with a CloudFront distribution, even if the origin servers reside in those regional VPCs. - For regional resources like Application Load Balancers and API Gateways, the certificate must reside in the exact same AWS region as the resource.
Domain Validation: DNS Validation vs. Email Validation
Before ACM issues a public certificate, the requesting party must prove ownership and administrative control over the fully qualified domain names (FQDNs) listed in the certificate. ACM supports two validation methods:
| Feature / Attribute | DNS Validation (Recommended) | Email Validation |
|---|---|---|
| Mechanism | ACM provides a unique CNAME record (Name and Value) that must be added to the domain's public DNS zone. | ACM sends approval emails to 5 common system addresses for the domain (admin@, administrator@, hostmaster@, postmaster@, webmaster@); it no longer uses WHOIS contacts. |
| Automated Renewal | Fully Automated: ACM automatically renews the certificate (valid 198 days) starting 45 days before expiration with zero human intervention, as long as the CNAME record persists and the certificate is actively bound to an AWS service. | Manual Action Required: Starting 45 days before expiration, ACM sends renewal emails that an administrator must approve; with 198-day certificates this happens about twice a year. Failure to click breaks renewal. |
| Route 53 Integration | One-Click: If the domain's hosted zone is managed in Amazon Route 53, ACM can automatically insert the CNAME record into Route 53 via the console or CloudFormation. | No native DNS integration. Relies on email delivery and mailbox access. |
| Multi-Domain & Wildcard | Ideal for wildcard domains (*.example.com) and Subject Alternative Names (SANs); uses a single CNAME per unique domain root. | Requires clicking validation links for every individual domain and SAN listed on the certificate. |
Exam Recommendation: Always use DNS validation for public ACM certificates. Email validation introduces operational fragility, manual renewal overhead, and the risk of unexpected certificate expiration if corporate mailbox forwarding fails.
AWS Private CA Architecture & PKI Hierarchies
While public certificates establish trust for external internet clients, internal zero-trust enterprise microservices, private VPC load balancers, VPN tunnels, and IoT device networks require an internal PKI. Public CAs cannot issue certificates for internal private namespaces (e.g., .corp, .internal, or .local), nor do enterprises want to expose internal service names in public Certificate Transparency (CT) logs.
AWS Private CA is an enterprise-scale, managed private certificate authority service that eliminates the undifferentiated heavy lifting of deploying, patching, and securing dedicated CA servers (such as Microsoft Active Directory Certificate Services or OpenSSL-based software).
Designing CA Hierarchies: Root and Subordinate CAs
Enterprise security architecture mandates a tiered hierarchy to enforce defense-in-depth and minimize the blast radius if an issuing key is compromised:
- Root CA:
- Sits at the apex of the cryptographic trust tree. It issues and signs subordinate CA certificates.
- Validity Period: Configured with a long validity horizon, typically 10 to 20 years.
- Operational Governance: In mature enterprises, the root CA key is locked down with strict SCPs, MFA delete protections, and multi-party approval workflows. It is never used to issue end-entity certificates directly.
- External Root Support: Organizations can maintain their root CA on-premises in a physical HSM and use AWS Private CA solely for subordinate issuing CAs by signing the subordinate CSR with the on-premises root CA.
- Subordinate (Issuing) CAs:
- Signed by the root CA or an intermediate CA.
- Validity Period: Configured with an intermediate validity period, typically 3 to 5 years.
- Function: Actively issues end-entity leaf certificates to application servers, internal ALBs, Kubernetes pods, and client devices.
- Subordinate CAs can be divided by environment (Production vs. Staging), geographic region, or business unit.
Certificate Revocation: CRLs and OCSP
When a private key is suspected of compromise, an employee departs, or a microservice is permanently decommissioned, the certificate must be revoked immediately before its natural expiration. AWS Private CA supports two complementary revocation verification mechanisms:
1. Certificate Revocation Lists (CRLs)
A CRL is a cryptographically signed file listing all revoked certificate serial numbers and revocation timestamps:
- S3 Publication: AWS Private CA automatically generates and updates the CRL file, depositing it into a designated Amazon S3 bucket.
- S3 Bucket Policy Requirements: The target S3 bucket must have a bucket policy granting write access to the AWS Private CA service principal (
acm-pca.amazonaws.com), ideally scoped withaws:SourceAccountandaws:SourceArn:{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowPCAToWriteCRL", "Effect": "Allow", "Principal": { "Service": "acm-pca.amazonaws.com" }, "Action": [ "s3:PutObject", "s3:PutObjectAcl", "s3:GetBucketAcl", "s3:GetBucketLocation" ], "Resource": [ "arn:aws:s3:::enterprise-pki-crl-bucket/*", "arn:aws:s3:::enterprise-pki-crl-bucket" ] } ] } - Client Accessibility: Relying parties (client browsers, operating systems, internal curl clients) must be able to reach the S3 bucket to download the CRL. Either allow public read on the CRL objects or, as AWS recommends, keep S3 Block Public Access on and serve the CRL through a CloudFront distribution (with a custom CRL name in the CA configuration).
2. Online Certificate Status Protocol (OCSP)
CRLs can grow substantially in size over time, introducing download latency and network overhead during TLS handshakes. OCSP provides a real-time, lightweight alternative:
- AWS Private CA provides a fully managed, highly available OCSP responder.
- Instead of downloading the full list of all revoked certificates, the relying party sends an HTTP GET request containing the specific certificate's serial number directly to the OCSP responder URL embedded in the certificate's Authority Information Access (AIA) extension.
- The OCSP responder returns a definitive, signed status:
Good,Revoked, orUnknown.
Cross-Account CA Sharing via AWS Resource Access Manager (RAM)
In multi-account AWS Organizations, provisioning a dedicated Private CA inside every single application account is cost-prohibitive (AWS Private CA carries a base fee of $400 per month per active CA) and creates severe PKI governance sprawl.
The enterprise standard pattern centralizes CA infrastructure within a Security Tooling or Shared Services Account and shares issuing capability across the enterprise using AWS Resource Access Manager (RAM).
How RAM Sharing Works
- Create the Subordinate CA: The security team provisions the issuing subordinate CA in the central Security account.
- Create a RAM Resource Share: The security team creates a resource share in AWS RAM, selects the Subordinate CA ARN as the shared resource, and specifies the principal (the entire AWS Organization ID or specific Organizational Unit ARNs).
- Consumer Account Issuance: Inside member accounts, the shared CA appears directly in the local AWS Certificate Manager console.
- Separation of Duties & Least Privilege:
- Application developers in member accounts can call
acm:RequestCertificatereferencing the shared CA ARN to provision certificates for their internal Application Load Balancers and API Gateways. - Member accounts CANNOT modify the CA configuration, alter revocation settings, view private keys, or delete the CA.
- Application teams achieve self-service certificate provisioning without compromising central PKI security governance.
- Application developers in member accounts can call
Deploying Private Certificates: Managed Integration vs. Exportable Certificates
AWS Private CA supports two distinct deployment models depending on where the certificate is hosted:
1. ACM-Managed Private Certificates (Integrated Services)
When a private certificate is requested through ACM (acm:RequestCertificate specifying CertificateAuthorityArn), ACM manages the entire lifecycle:
- The certificate binds seamlessly to internal Application Load Balancers, API Gateways (supporting custom domains and mutual TLS / mTLS truststores), and Network Load Balancers.
- The key stays in ACM unless you export the certificate: ACM private certificates can be exported with
ExportCertificate(private key encrypted with a passphrase) for use on EC2 or on premises. - ACM automatically renews the private certificate prior to expiration and automatically updates the attached load balancers with the new certificate version.
2. Exportable Private Certificates via AWS Private CA API
When securing workloads that run outside ACM-integrated services—such as Apache/Nginx web servers running on Amazon EC2 instances, self-hosted Docker containers, Kubernetes ingress controllers, on-premises hypervisors, or client mTLS authentication devices—ACM cannot bind the certificate automatically.
For these use cases, engineers invoke the AWS Private CA API directly:
acm-pca:IssueCertificate: Issues a certificate from a Certificate Signing Request (CSR).acm-pca:GetCertificate: Retrieves the signed X.509 certificate body and certificate chain.acm-pca:GetCertificateAuthorityCertificate: Retrieves the CA certificate and chain.- Exportable Private Key: When using the Private CA API, the client generates their own private key locally, submits the CSR to Private CA, and receives the signed certificate. The private key resides securely on the EC2 instance or host server.
- Automation: Integrations such as the
aws-privateca-issuerplugin for cert-manager on Kubernetes, AWS Private CA Connector for Active Directory, and HashiCorp Vault automate key generation, CSR submission, and certificate installation. Short-lived certificate mode CAs issue certificates valid for up to 7 days at a lower price.
Specialty Exam Pitfalls & Architectural Traps
- CloudFront Regional Mismatch: Requesting a public ACM certificate in
eu-central-1orus-west-2and attempting to attach it to an Amazon CloudFront distribution. CloudFront requires all SSL/TLS certificates to be provisioned inus-east-1. Regional certificates will not appear in the CloudFront distribution drop-down. - Blocking Public Access on the S3 CRL Bucket: Enabling S3 Block Public Access (
BlockPublicAcls,IgnorePublicAcls,BlockPublicPolicy,RestrictPublicBuckets) on the S3 bucket designated for Private CA CRLs without configuring an alternate distribution mechanism (such as CloudFront). When external or internal clients attempt to validate certificate revocation during TLS handshakes, the CRL fetch fails, causing client connection terminations. - Assuming Every ACM Certificate Can Be Exported: A standard public ACM certificate can't be exported, and an existing one can't be made exportable. For EC2-hosted Nginx or Apache servers, request an exportable public certificate (for internet-facing names), export an ACM private certificate or issue one from AWS Private CA (for internal names), or terminate TLS on a load balancer.
- DNS CNAME Deletion Causing Renewal Outages: Deleting the CNAME validation record from Amazon Route 53 after the public ACM certificate is successfully issued. While the certificate remains valid until its expiration date, deleting the CNAME record breaks ACM's automated renewal, which starts 45 days before expiry. When the renewal window opens, ACM fails validation and the certificate expires, inducing production application outages.
A multinational enterprise operates 120 AWS accounts within an AWS Organization. The CISO mandates that all internal microservice endpoints, private Application Load Balancers, and internal API Gateways must use SSL/TLS certificates issued by a private enterprise Certificate Authority. Application development teams must be able to provision and renew certificates independently in their respective member accounts, but must be strictly prohibited from managing CA configuration, viewing CA root private keys, or modifying revocation lists. What architecture satisfies these requirements with the least operational overhead and cost?
Deploy a dedicated AWS Private CA root and subordinate CA inside every member account and delegate full administrative access to application engineering leads.
Deploy an Active Directory Certificate Services (AD CS) cluster on Amazon EC2 instances in a shared VPC and distribute domain service account credentials to all accounts.
Provision a single AWS Private CA in each member account and configure cross-account IAM trust roles allowing central security administrators to review and approve certificate requests.
Provision a Subordinate CA in a centralized Security Tooling account, share the Subordinate CA across the AWS Organization using AWS Resource Access Manager (RAM), and allow member accounts to request private certificates via ACM.
An infrastructure engineer creates an Amazon CloudFront distribution to serve a global static website backed by an Amazon S3 origin. The engineer requests a public SSL/TLS certificate in AWS Certificate Manager for the custom domain 'www.example.com' in the us-west-2 (Oregon) region, completes DNS validation successfully, and attempts to select the certificate in the CloudFront distribution settings. However, the certificate does not appear in the Custom SSL Certificate drop-down list. What must the engineer do to resolve this issue?
Modify the S3 bucket policy to allow cloudfront.amazonaws.com access to read the ACM certificate in us-west-2.
Request a new public ACM certificate for 'www.example.com' in the us-east-1 (N. Virginia) region and complete DNS validation.
Export the certificate body and private key from ACM in us-west-2 and import them into IAM SSL certificate storage.
Update the Route 53 hosted zone to create an ALIAS record pointing to the us-west-2 ACM certificate ARN.
A security engineer configures an AWS Private CA with Certificate Revocation Lists (CRLs) enabled, designating an Amazon S3 bucket named 'corp-pki-crl-storage' for CRL storage. During testing, internal application clients attempting to establish TLS connections to internal services report certificate validation errors indicating that the CRL could not be retrieved. The engineer verifies that AWS Private CA is successfully writing CRL files to S3. What is the most likely cause of the client validation failure?
The S3 bucket lacks an AWS KMS customer managed key policy permitting acm-pca.amazonaws.com to execute kms:GenerateDataKey.
The AWS Private CA service does not support CRL distribution over Amazon S3 and requires an OCSP responder configured on Amazon Route 53.
The Amazon S3 bucket has S3 Block Public Access enabled and lacks an accessible distribution endpoint, preventing relying party clients from downloading the CRL over HTTP.
The certificates issued by the Private CA do not contain the Authority Information Access (AIA) extension required for CRL validation.
A DevOps team is deploying legacy Apache HTTP servers on standalone Amazon EC2 instances inside a private subnet. The servers serve only internal hostnames to corporate clients that already trust the organization's AWS Private CA hierarchy, which is shared from a security account through AWS RAM. Policy requires TLS to terminate on the Apache servers with the certificate and private key installed locally, and the team wants AWS to track renewals. What is the recommended approach?
Request a private certificate in ACM from the shared AWS Private CA, export it with ExportCertificate (the private key is encrypted with a passphrase), install it on the servers, and re-export when ACM renews it.
Request a standard public ACM certificate, attach it to an internal Application Load Balancer, and configure the ALB to forward decrypted TLS packets to the EC2 instances.
Submit a support ticket to AWS Support requesting temporary extraction of the ACM private key in PEM format.
Store a plaintext self-signed certificate and private key in an Amazon S3 bucket and use EC2 user data to download the files upon instance launch.
Sections you finish are checked off in the contents.