如何为 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)

如何为 HTTPS (SSL) 配置 Codeigniter?

如何为 heroku 配置 lite-server 端口?

如何为 Amazon S3 存储桶配置 SSL

如何为 pm2 指定端口号

Heroku 上带有 SSL 的 WebSockets - Chrome 和 FireFox 中的问题