heroku:在免费套餐上设置SSL证书吗?

时间:2018-09-05 12:48:55

标签: ssl heroku https certificate

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

我知道是否可以升级到“业余爱好计划”(每月7美元),我可以自动获得它。

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

所以: 是否可以使用免费计划在Heroku JUST上为应用设置SSL证书? 也许通过CLI以复杂/复杂的方式进行?

在Heroku页面和文档中,这似乎是不可能的。 但是我不得不问:)

10 个答案:

答案 0 :(得分:13)

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

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

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

步骤2:在Cloudflare的DNS中添加Heroku Server的Cname记录。说明是here 在这里,您将获得一些SSL安全问题。

第3步:现在,将SSL / TLS加密模式更改为“灵活(不完整)”。 *重要 enter image description here

现在了解工作原理:-

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

然后Cloudflare使用非SSL(非HTTPs和未加密)向Heroku Server(源)发出请求。

然后,Heroku Server(原始服务器)将使用非SSL的响应返回给Cloudflare。

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


我已经测试了这种方法,并正在研究https://www.foneman.in

答案 1 :(得分:4)

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

最重要的是,Heroku提到他们提供免费 SSL证书,但事实并非如此,除非您有Hobby($ 7 / mo)或Pro计划。

This link提供了更多详细信息以及面临相同问题的其他用户的反馈。

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

其他用户已通过逐步指南指向this article,但该指南已过时,并且提到的“实验室”选项不再适用于Heroku。

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

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

答案 2 :(得分:4)

以下是您免费使用Cloudflare获取FULL SSL的方法。

enter image description here

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

步骤2:在Cloudflare的DNS中添加Heroku Server的Cname记录。说明为here。在这里,您将获得一些SSL安全问题。

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

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

(我在这里了解了一般方法https://mikecoutermarsh.com/adding-ssl-to-heroku-with-cloudflare/,尽管它很旧,但仍然可以使用。

答案 3 :(得分:3)

我也遇到了这个问题。我想为我的React App的Heroku上的免费帐户设置自定义域。我在网上搜索了很多信息,并从Heroku支持人员中读取了大量文档。

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

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

NB。 Google Firebase允许free hosting and Custom Domain name使用SSL,在charging之前最多进行一定量的流量。对于测试应用程序,这将是一个完美的选择。我正在使用它。设置我的自定义域很容易。

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

答案 4 :(得分:3)

Heroku 中不存在免费 SSL,或者让我说在免费计划中不可能实现它。

为了能够在 Heroku 中包含任何形式的第三方 SSL,无论是付费 SSL 还是免费第三方 SSL,您必须更改为 Hobby 或 Professional dynos 才能使 SSL 工作。

一个更简单的选择,如果您使用 Heroku,则无需购买第三方 SSL。只需更改为 Hobby 或 Professional dynos。

为了能够更改dyno类型,选择您的应用,转到上部的来源部分,就在下面,点击更改测功机类型按钮。

Hobby Dyno 每月的费用为 7 美元,而 Professional Dyno 每月的费用为 25 - 500 美元。

毕竟,请记住转到您的Rails 应用: 去; .../config/environments/production.rb

--> 取消注释以下行:

# config.force_ssl = true

---> 致:

config.force_ssl = true

之后,您将能够获得 SSL但不是免费的

答案 5 :(得分:2)

如果您正在使用

1]免费的heroku,

您不能使用1)免费的ssl或2)付费的ssl

2]支付了heroku

1)您获得免费的SSL 2)您也可以使用付费的SSL

解决方案 1]获得付款的Heroku 2]移动到netlify或其他替代方法

答案 6 :(得分:1)

如果您不介意将前端托管在其他服务上,您可以在 Vercel 中托管它,使用免费的 SSL,而将后端保留在 Heroku。很直接!

https://vercel.com/

答案 7 :(得分:0)

https://letsencrypt.org/上获取免费证书。

效果很好!

答案 8 :(得分:0)

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

  

使用免费测功机的应用程序可以使用* .herokuapp.com证书   需要SSL。

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

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

答案 9 :(得分:0)

解决此问题的一种方法可能是在可以设置SSL证书的主机上设置代理服务器,然后也可以使用加密将请求转发到免费的herokudns域。

您必须拥有运行nginx或httpd之类的单独服务器。.我不确定托管代理的免费服务,但是通常在您注册域时您可能会得到一个托管附加组件,或者也许人们已经对加密的主机有了访问权限,并且只想将Heroku也用于他们的节点应用程序。

设置httpd代理看起来像这样(来自https://serverfault.com/questions/84821/apache-proxypass-with-ssl):

<VirtualHost 1.2.3.4:80>
ServerName customdomain.com
SSLProxyEngine On
SSLProxyCheckPeerCN on
SSLProxyCheckPeerExpire on
ProxyPass / https://heroku-app-name.herokuapp.com
ProxyPassReverse / https://heroku-app-name.herokuapp.com
</VirtualHost>

这样,您就可以完全加密:)

相关问题