ACM certificate is imported or has Certificate Transparency logging enabled
ACM-issued certificates are checked for Certificate Transparency (CT) logging being enabled. Certificates with type IMPORTED are excluded from evaluation.
Risk
Disabling CT logging reduces visibility into misissued or rogue certificates, weakening confidentiality and integrity. Attackers can impersonate sites or run TLS man-in-the-middle without timely detection. Unlogged public certs may be distrusted by browsers, impacting availability and user trust.
Run this check with Prowler
Run in Prowler Cloudprowler aws --checks acm_certificates_transparency_logs_enabledRecommendation
Enable CT logging on all ACM-issued public certificates to maintain transparency and rapid revocation.
Monitor CT logs for your domains and alert on unexpected issuances. For sensitive internal names, favor private PKI or non-public hostnames instead of disabling CT, and apply defense in depth with short certificate lifetimes.
Remediation
CLI
aws acm update-certificate-options --certificate-arn <CERTIFICATE_ARN> --options CertificateTransparencyLoggingPreference=ENABLEDTerraform
# Enable Certificate Transparency logging on an ACM certificate
resource "aws_acm_certificate" "<example_resource_name>" {
domain_name = "<example_domain_name>"
options {
certificate_transparency_logging_preference = "ENABLED" # Critical: turns on CT logging to pass the check
}
}NativeIaC
# CloudFormation: Enable Certificate Transparency logging on an ACM certificate
Resources:
<example_resource_name>:
Type: AWS::CertificateManager::Certificate
Properties:
DomainName: <example_domain_name>
CertificateTransparencyLoggingPreference: ENABLED # Critical: turns on CT logging to pass the checkOther
Check Code
from prowler.lib.check.models import Check, Check_Report_AWS
from prowler.providers.aws.services.acm.acm_client import acm_client
class acm_certificates_transparency_logs_enabled(Check):
def execute(self):
findings = []
for certificate in acm_client.certificates.values():
if certificate.in_use or acm_client.provider.scan_unused_services:
report = Check_Report_AWS(
metadata=self.metadata(), resource=certificate
)
if certificate.type == "IMPORTED":
report.status = "PASS"
report.status_extended = f"ACM Certificate {certificate.id} for {certificate.name} is imported."
else:
if not certificate.transparency_logging:
report.status = "FAIL"
report.status_extended = f"ACM Certificate {certificate.id} for {certificate.name} has Certificate Transparency logging disabled."
else:
report.status = "PASS"
report.status_extended = f"ACM Certificate {certificate.id} for {certificate.name} has Certificate Transparency logging enabled."
findings.append(report)
return findings