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

AWS CDK Route53与证书配置问题:根域名SSL无法正常工作

解决AWS CDK中根域名SSL协议错误问题

你的问题核心是SSL证书未覆盖根域名,同时CloudFront分发的域名别名也未包含根域名,导致访问example.com时没有对应的有效证书,触发SSL协议错误。

问题分析

  1. 当前ACM证书仅配置了*.example.com,通配符证书默认不匹配根域名example.com,必须显式将根域名加入证书的域名列表。
  2. CloudFront的viewerCertificate别名只设置了*.example.com,未包含根域名,导致CloudFront无法为根域名请求提供正确的证书。

解决方案

修改以下两处代码:

1. 更新ACM证书配置

将证书同时包含根域名和通配符子域名:

// TLS certificate
const certificate = new acm.DnsValidatedCertificate(
  this,
  "SiteCertificate",
  {
    domainName: siteDomain, // 根域名作为主域名
    subjectAlternativeNames: ["*." + siteDomain], // 添加通配符子域名
    hostedZone: zone,
    region: "us-east-1", // CloudFront仅认可此区域的证书
  }
);
const certificateArn = certificate.certificateArn;

2. 更新CloudFront ViewerCertificate的别名

在aliases数组中同时加入根域名和通配符域名:

const viewerCertificate = cloudfront.ViewerCertificate.fromAcmCertificate(
  {
    certificateArn: certificateArn,
    env: {
      region: Aws.REGION,
      account: Aws.ACCOUNT_ID,
    },
    node: this.node,
    stack: parent,
    metricDaysToExpiry: () => ... // 保留原有逻辑
  },
  {
    sslMethod: cloudfront.SSLMethod.SNI,
    securityPolicy: cloudfront.SecurityPolicyProtocol.TLS_V1_1_2016,
    aliases: [siteDomain, "*." + siteDomain], // 同时包含根域名和通配符
  }
);

3. 可选优化Route53 www记录

原www的Cname记录指向根域名,虽然能工作,但更直接的方式是指向CloudFront分发域名,减少解析层级:

new route53.CnameRecord(this, "SiteWWWAliasRecord", {
   recordName: "www." + siteDomain,
   domainName: distribution.distributionDomainName, // 直接指向CloudFront域名
   zone,
});

验证步骤

部署修改后的CDK栈后:

  • 等待ACM证书完成DNS验证(通常几分钟)
  • 等待CloudFront分发更新完成(约15-20分钟)
  • 访问example.com和www.example.com,确认SSL连接正常

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 22:25:25