You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Terraform创建的AWS ACM证书无法验证,域名NS异常

解决方案:ACM证书Pending Validation及DNS配置错误修复

核心问题定位

你的问题根源是域名的DNS权威服务器配置错误:在线nslookup返回公司另一域名的NS记录,说明当前域名(或子域)的NS记录未指向AWS Route53托管区的权威服务器,导致ACM的CNAME验证记录无法被公网DNS解析,证书始终无法完成验证。


第一步:修复NS记录配置

  1. 登录AWS Route53控制台,找到目标域名对应的托管区,记录下托管区提供的4条NS服务器地址(格式如ns-xxx.awsdns-xx.org)。
  2. 更新域名的权威NS记录:
    • 若域名在AWS注册:直接在Route53的「域名注册」页面,将该域名的NS记录替换为托管区的4条地址。
    • 若域名在第三方注册商:登录注册商平台,找到域名的DNS设置,将权威NS记录更新为Route53托管区的地址。
    • 注意:如果是子域名(如dev.your-domain.com),需在父域名(your-domain.com)的DNS托管区中添加该子域的NS记录,指向Route53托管区的服务器,而非修改顶级域的NS。
  3. 验证NS记录生效:
    • 执行命令:nslookup -type=NS your-domain.com
    • 确认返回的NS地址与Route53托管区的地址完全一致,等待DNS全局生效(通常1-24小时,可通过dig +trace your-domain.com跟踪解析路径)。

第二步:重新触发ACM证书验证

当NS记录配置正确且生效后,按以下方式重新触发验证:

方式1:通过Terraform重新触发

  1. 销毁当前处于Pending状态的ACM证书资源:
    terraform destroy -target=aws_acm_certificate.your-cert-resource-name
    
    (将your-cert-resource-name替换为你Terraform代码中证书资源的名称)
  2. 重新执行terraform apply:
    • 若代码配置了自动添加Route53验证记录,Terraform会自动创建新的CNAME记录;
    • 若为手动配置,需复制新生成的CNAME验证记录到Route53托管区。

方式2:通过AWS控制台重新触发

  1. 登录eu-north-1区域的AWS ACM控制台,找到状态为PENDING_VALIDATION的证书。
  2. 查看证书详情中的CNAME验证记录:
    • 若记录已存在但未生效,删除现有记录后重新添加新生成的验证记录;
    • 点击验证状态旁的刷新按钮,手动触发ACM的DNS检查。

第三步:验证后续资源部署

  1. 等待10-30分钟,确认ACM证书状态变为ISSUED。
  2. 重新执行terraform apply,此时ELBv2监听器可正常创建。

额外排查点

  • 确认Terraform代码中ACM证书资源的validation_method设置为"DNS",且正确关联了Route53托管区(自动验证示例代码):
    resource "aws_acm_certificate" "dev_cert" {
      domain_name       = "dev.your-domain.com"
      validation_method = "DNS"
      tags = {
        Environment = "dev"
      }
    }
    
    resource "aws_route53_record" "dev_cert_validation" {
      zone_id = aws_route53_zone.dev_zone.zone_id
      name    = aws_acm_certificate.dev_cert.domain_validation_options.0.resource_record_name
      type    = aws_acm_certificate.dev_cert.domain_validation_options.0.resource_record_type
      records = [aws_acm_certificate.dev_cert.domain_validation_options.0.resource_record_value]
      ttl     = 60
    }
    
    resource "aws_acm_certificate_validation" "dev_cert" {
      certificate_arn         = aws_acm_certificate.dev_cert.arn
      validation_record_fqdns = [aws_route53_record.dev_cert_validation.fqdn]
    }
    
  • 确认Route53托管区的域名与ACM证书的域名完全匹配(例如证书为dev.your-domain.com,托管区应为dev.your-domain.com或其父域your-domain.com)。

内容的提问来源于stack exchange,提问作者chenny

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.07 04:30:21