我正在尝试使用 Cloudfront 通过 HTTPS 使用“备用域名”提供 S3 存储桶,但是在浏览器中加载网站时出现此错误:
NET::ERR_CERT_COMMON_NAME_INVALID
This server could not prove that it is example.com; its security
certificate is from *.cloudfront.net. This may be caused by a
misconfiguration or an attacker intercepting your connection.
这个错误是有道理的,但据我所知,只要客户端支持 SNI,Cloudfront 应该能够以某种方式使用默认证书来处理“备用域名”。以下是有关它的 AWS 文档:
我是不是误解了什么?
基本上,我只希望能够通过 Cloudfront 获得 HTTPS,而不必支付 AWS 为专用 IP 证书收取的 600 美元/月费用。
答案1
@ceejayoz 说的对,使用 ACM (Amazon 证书管理器) 来实现这一点。无论如何,我现在可以使用 HTTPS,所以这里有一个完整的答案来帮助其他人(以及我未来健忘的自己)
以下是使用 SNI 设置 HTTPS 的步骤:
- 使用 ACM 为您的域名生成证书(免费)
- 验证您对域名的所有权(ACM 会告诉您执行此操作)
- 转到 Cloudfront 控制台,单击您的分发,单击“常规”选项卡上的编辑。
- 在“SSL 证书”下,您现在应该能够选择“自定义 SSL 证书”(如果您尚未生成证书,则此功能将被禁用)
- 从下拉框中选择您的证书。
- 在“自定义 SSL 客户端支持”下,确保选中“仅支持服务器名称指示 (SNI) 的客户端”。(否则您将被收取巨额费用)
- 保存您的更改,一切就绪。
为了清楚起见,以下是我发现的一些有用的定价信息:
我查看了 Cloudfront 定价页面上的细则,发现了一些更有用的文档: https://aws.amazon.com/cloudfront/custom-ssl-domains/
“SNI Custom SSL”下的重要一行是:
“此功能没有单独定价。您可以使用 SNI 自定义 SSL,无需预付或每月支付证书管理费用;您只需支付正常的 Amazon CloudFront 数据传输和 HTTPS 请求费用。”
以下是来自权威人士的一些令人困惑的指示:
https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/cnames-and-https-procedures.html