如何为 Heroku 应用程序配置带有 SSL 的 Amazon Route
Posted
技术标签:
【中文标题】如何为 Heroku 应用程序配置带有 SSL 的 Amazon Route【英文标题】:How to configure a Amazon Route with SSL for a Heroku App 【发布时间】:2018-04-26 17:49:50 【问题描述】:我需要将 Amazon 域设置为 Heroku 应用程序的自定义域。我找到了下一个教程https://devcenter.heroku.com/articles/route-53,但如果应用程序需要 https 请求,它就不起作用。第一个想法是在 Heroku 中设置 SSL 证书,但是 SSL 亚马逊域管理器不允许下载证书,因此 SSL 需要由 AWS 管理。 将 Amazon SSL 添加到 Heroku 应用程序的最佳方法是什么?
【问题讨论】:
“但如果应用需要 https 请求,它就不起作用”为什么不呢?使用 Route53 的具体原因是什么会阻止您完全使用 Heroku SSL?我会专注于这个问题,而不是走 AWS SSL 证书的道路,这不适用于您的 Heroku 应用程序。 你说得对,我没有很好地描述问题。该请求被允许但不安全,因为我没有设置 SSL。然后我尝试了创建 CloudFront 的选项,但错误的配置会导致 HTTP 方法错误。最后,我按照一些答案和指南解决了它,并描述了这个问题的过程。感谢您的反馈。 【参考方案1】:我发现的最佳选择是创建一个 AWS CloudFront 并像 Karan 在他的 answer 中描述的那样对其进行配置,但需要一些附加组件:
从 AWS Certificate Manager 创建一个证书并批准它。
创建一个 CloudFront 分配,将原始域名作为您的 Heroku URL,例如 myapp.herokuapp.com,并将自定义 SSL 证书作为您从 AWS Cert Manager 创建的证书。
在创建分发时,请确保您的 TTL 为 0,否则所有响应都将被缓存 如果您不完成此步骤,您可能会收到如下错误:
此分发未配置为允许用于请求的 HTTP 请求方法。该发行版仅支持可缓存的请求。
按照我在问题[https://devcenter.heroku.com/articles/route-53][4]
中提到的指南进行操作
【讨论】:
还应该提到的是,应该传递 cookie(取决于您的应用程序),因为许多应用程序都使用它们。【参考方案2】:Amazon 创建的 SSL 证书仅适用于受支持的 Amazon 服务,例如 Elastic Load Balancer、CloudFront 分配和 API Gateway。
使用 Amazon SSL 证书的最简单方法是添加负载均衡器。另一种方法是启用 CloudFront。
AWS Certificate Manager
【讨论】:
我选择了 CloudFront 选项,它按照几个指南工作。谢谢:)以上是关于如何为 Heroku 应用程序配置带有 SSL 的 Amazon Route的主要内容,如果未能解决你的问题,请参考以下文章
如何为以下设置安装 SSL(React 前端 + Nodejs 后端 + 自定义域 Heroku)