如何使用自定义 SSL 正确链接 Heroku、CloudFront、Route53?

Posted

技术标签:

【中文标题】如何使用自定义 SSL 正确链接 Heroku、CloudFront、Route53?【英文标题】:How to properly link Heroku, CloudFront, Route53 with a custom SSL? 【发布时间】:2020-03-05 03:06:01 【问题描述】:

我正在尝试设置托管在 Heroku 上的 Web 应用程序。 DNS 路由通过 AWS Route53 完成,并通过 CloudFront 进行分配。我已经为 www.example.com 购买了自己的 SSL 证书。

除了我希望能够使用子域然后在 Heroku 中显示不同的应用程序之外,一切正常。这也适用于本地。但是,如果我将 CloudFront 中的主机标头列入白名单以便执行此路由,Heroku 将重定向到未知应用程序。

AWS 说这是 Heroku 端的错误配置,Heroku 表示我错误配置了 DNS 路由,需要将生成的 CNAME 应用到 Route53。但是该 CNAME 路由到 CloudFront。

所以现在的设置是:

Heroku

托管网络应用程序。 自动证书管理已启用。 未添加域。

Route53

CNAME 指向 CloudFront 分区。以及 A 和 AAAA。 也适用于 * 通配符

云端

Origin 指向 Heroku 部署。 具有自定义域 URL 的 CNAMES,例如 *.example.com

我自己的带有 * 通配符支持的自定义 SSL 已上传到 AWS CM 并添加到 CloudFront。它有效,但我可以想象我在某些步骤中配置错误。

如果我发送一个主机头,我的 Heroku 部署重定向到错误的应用程序怎么办?

【问题讨论】:

请贴出各个服务的相关配置。 @ThomasTimbul 我实际上并不想在公共论坛上发布任何配置细节。有什么建议吗? 可以通过更改域名等机密信息来实现吗?或者一张你把东西空白的图片?通常发现错误配置的最简单方法是校对它.... AWS Cloudfront as CDN for Heroku Site with Custom Domain的可能重复 @ThomasTimbul 不是重复的,因为它使用 S3 存储桶而不是 AWS 之外的来源。我会做一些配置的屏幕截图 【参考方案1】:

在与 Heroku 沟通并链接此帖子后。我很清楚 Heroku 和 Route56/CloudFront 有特殊的关系,不需要将 Heroku 创建的 CNAME 引用添加到 AWS,Heroku 的验证可以忽略。

在 CLI 中运行以下命令有效,但未收到 Host 标头,并且 Heroku 端未发生重定向。

heroku domains:add example.com -a heroku-app-name
heroku domains:add *.example.com -a heroku-app-name

【讨论】:

以上是关于如何使用自定义 SSL 正确链接 Heroku、CloudFront、Route53?的主要内容,如果未能解决你的问题,请参考以下文章

Heroku SSL 添加但访问域仍然显示连接不是私有的

具有自定义用户域的 SSL

从ExpeditedSSL迁移到免费的Heroku SSL

无法将 Heroku 连接到自定义 Google 域

在 Heroku 的模板中使用自定义字体时遇到问题

如何为 Heroku 应用程序配置带有 SSL 的 Amazon Route