Cloudfront 使用 SNI 实现 HTTPS 的备用域

Cloudfront 使用 SNI 实现 HTTPS 的备用域

我正在尝试使用 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 文档:

https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/cnames-https-dedicated-ip-or-sni.html#cnames-https-sni

我是不是误解了什么?

基本上,我只希望能够通过 Cloudfront 获得 HTTPS,而不必支付 AWS 为专用 IP 证书收取的 600 美元/月费用。

答案1

@ceejayoz 说的对,使用 ACM (Amazon 证书管理器) 来实现这一点。无论如何,我现在可以使用 HTTPS,所以这里有一个完整的答案来帮助其他人(以及我未来健忘的自己)

以下是使用 SNI 设置 HTTPS 的步骤:

  1. 使用 ACM 为您的域名生成证书(免费)
  2. 验证您对域名的所有权(ACM 会告诉您执行此操作)
  3. 转到 Cloudfront 控制台,单击您的分发,单击“常规”选项卡上的编辑。
  4. 在“SSL 证书”下,您现在应该能够选择“自定义 SSL 证书”(如果您尚未生成证书,则此功能将被禁用)
  5. 从下拉框中选择您的证书。
  6. 在“自定义 SSL 客户端支持”下,确保选中“仅支持服务器名称指示 (SNI) 的客户端”。(否则您将被收取巨额费用)
  7. 保存您的更改,一切就绪。

在此处输入图片描述


为了清楚起见,以下是我发现的一些有用的定价信息:

我查看了 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

相关内容