Back to Checks
aws

ACM certificate is imported or has Certificate Transparency logging enabled

acm_certificates_transparency_logs_enabled
Service: acmSeverity: medium
OfficialBuilt-inVerified
Categories:logging
Resource Type:AwsCertificateManagerCertificate

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 Cloud
Run
prowler aws --checks acm_certificates_transparency_logs_enabled

Recommendation

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=ENABLED

Terraform

# 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 check

Other

1Open the AWS Certificate Manager (ACM) console
2Select the certificate with transparency logging disabled
3Click Actions > Edit transparency logging
4Choose Enable transparency logging
5Click Save

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