heroku:在免费计划上设置 SSL 证书?

ste*_*rio 36 ssl https certificate heroku

我想为我在 heroku 上的一个应用程序(一个基于 nodeJS + Vue 的简单应用程序)设置一些 SSL 证书。

我知道如果我升级到爱好计划(每月 7 美元),我可以自动拥有它。

但是现在对于测试应用程序来说太贵了,所以我想知道我是否也可以通过免费计划实现一些类似的目标。

所以:是否可以使用免费计划为 Heroku 上的应用程序设置 SSL 证书?也许通过 CLI 以一种复杂/棘手的方式?

从 Heroku 页面和文档看来,这是不可能的。但我不得不问:)

aue*_*aki 34

在这里,我有一个更好的方法来处理这个问题。由于 Heroku 不提供 SSL 免费计划。但是您可以使用提供免费 SSL 的 Cloudflare。您可以使用 Cloudflare 作为 SSL 的桥梁。

要求: 1. Cloudflare 帐户 2. 您的应用程序不应具有内置 SSL 重定向(如 redirect-ssl) 否则,这将导致太多重定向错误

第 1 步:将您的域指向 CloudFlare。您基本上打开一个帐户并在出现提示时输入您的域。您可能会收到更改域名服务器的说明。

第二步:在Cloudflare的DNS中添加Heroku Server的Cname Record。说明 这里 您会遇到一些 SSL 安全问题。

第 3 步:现在将您的 SSL/TLS 加密模式更改为灵活(不完整)。*重要的 在此处输入图片说明

现在了解工作:-

客户端(浏览器)向https://example.com 发出请求 首先,请求通过 SSL 到达 Cloudflare。(用户查看到服务器的加密连接。)

然后 Cloudflare 使用非 SSL(非 Https 和未加密)向 Heroku 服务器(源)发出请求。

然后 Heroku Server (Origin) 将非 SSL 的响应返回给 Cloudflare。

最后 Cloudflare 将请求转发给客户端(浏览器)。


我已经测试了这种方法并在https://www.foneman.in 上工作

  • 为什么您只想加密到服务器的请求路由的一半?让您的用户在浏览器中看到绿色锁并_认为_您的网站是安全的?不酷... (7认同)
  • @michio1234 这比在浏览器中出现不安全警告要好。我们知道这根本不是一个好的做法。但这是无需花费一分钱即可获得免费 ssl 的唯一方法。 (6认同)

alp*_*eta 22

迟到的响应,但我在这里添加我只是花了一个小时试图用 Heroku 设置 SSL - 导致死胡同。

最重要的是,Heroku 提到他们提供免费的SSL 证书,但事实并非如此,除非您有业余爱好(每月 7 美元)或 Pro 计划。

此链接包含更多详细信息和来自面临相同问题的其他用户的反馈。

上面关于 LetsEncrypt 的答案是不正确的。虽然您可以获得免费证书,但它不能包含在免费的 Heroku 应用程序中。

其他用户通过分步指南指出了这篇文章,但该指南已经过时,并且提到的“实验室”选项不再适用于 Heroku。

请参阅下面的评论以获取一些替代建议

在我的特定情况下,我能够在zeit上获得免费的 SSL 。

  • 感谢阿尔法泽塔的回答。这几个月我也得出了同样的结论:不可能。悲伤但真实。但我将我的项目重新安排为带有一些服务的静态页面,现在我不再需要 Heroku 了。学过的知识 :) (2认同)
  • 好吧,我完全改变了我的堆栈。我的主要应用程序现在是一个静态网站,托管在 Zeit (https://zeit.co/) 上。在这里我可以拥有免费的 SSL 和自定义域名。这样 SSL 问题就解决了。对于我需要的服务器功能(联系表单),现在我的静态网站使用另一个节点应用程序,通过 ajax 托管在 Heroku 上。 (2认同)
  • 显然 [Vercel.com](https://vercel.com/) 收购了 Zeit。我在 Vercel.com 中找不到任何 SSL 服务 (2认同)

Ara*_*ash 16

以下是免费使用Cloudflare获得完整 SSL 的方法。

在此处输入图片说明

第 1 步:将您的域指向CloudFlare。您基本上打开一个帐户并在出现提示时输入您的域。您可能会收到更改域名服务器的说明。

第二步:在Cloudflare的DNS中添加Heroku Server的Cname Record。说明在这里。在这里您会遇到一些 SSL 安全问题。

第 3 步:现在将您的 SSL/TLS 加密模式更改为完全

第 4 步:在您的 DNS 设置中,您需要创建一个 CNAME:yourdomain.com -> yourapp.herokuapp.com。

(我在这里了解了一般方法https://mikecoutermarsh.com/adding-ssl-to-heroku-with-cloudflare/虽然它很旧,但它仍然有效。


小智 6

我也有这个问题。我想为我的 React 应用程序在 Heroku 上的免费帐户设置一个自定义域。我在网上搜索了很多信息,并从 Heroku 支持中阅读了大量文档。

结论是在 Heroku 免费账户上,无法设置带有 SSL 证书的自定义域名。如果您需要使用自定义域名进行 SSL,则需要升级到他们的任何付费托管帐户。

只要不使用自定义域名,Heroku 就会为其免费帐户提供 SSL 证书。因此,标准的免费帐户 URL 将类似于“ https://your-app-name.herokuapp.com

注意。Google Firebase 允许使用 SSL 的免费托管和自定义域名,在收费前最多可提供一定量的流量。对于测试应用程序,这将是一个完美的选择。我正在使用它。设置我的自定义域很容易。

我希望这可以为您节省数小时的搜索时间。


jmm*_*jmm 5

由于您没有明确说明是否需要将 SSL 证书应用于自定义域,因此我认为有必要根据 Heroku 文档说明:

使用免费 dynos 的应用如果需要 SSL,可以使用 *.herokuapp.com 证书。

https://devcenter.heroku.com/articles/ssl

也许未来的读者会发现这个答案很有帮助......