Heroku 上有免费 SSL 安全证书吗?

12

我在Heroku上推送了一个Spree Rails应用程序,它使用了https://协议,并在浏览器中显示了黄色的挂锁。 点击后显示“身份已验证”,证书信息显示发行给:*.herokuapp.com

这很好。在Heroku端没有任何配置或费用的情况下,我的应用程序正在使用具有有效证书的SSL。好吧,虽然只是黄色的挂锁,但对于免费服务来说已经不错了。

我知道这可能是一个愚蠢的问题...但我如何在Heroku上运行另一个带有验证证书的Rails应用程序,而无需支付SSL附加组件和购买自己的证书?


现在Heroku免费提供LetsEncrypt.org。他们称之为自动证书管理。仅适用于Hobby($7/m)及以上计划。 - Chloe
3个回答

17
您的浏览器正在建立的TLS / SSL连接是因为您通过appname.herokuapp.com连接到应用程序。这是标准配置,对于您创建的任何应用程序都将自动工作。 Heroku提供SSL加密,因为您可能会向服务器发送敏感信息,并且加密数据是更好的做法,即使您可能不认为数据是敏感的,但您的客户端可能会这样认为。所有有信誉的提供商(SAS,Web Hosts,Email Providers)都会在基础域(*.herokuapp.com)上安装通配符SSL证书,因为它是一个单个证书,相对便宜,并将自动保护所有子域。
已经说过,应用程序已经启用SSL,并且可以通过使用https访问,例如https://appname.herokuapp.com,但是当您希望建立与客户的可信关系时,您需要选择SSL终端选项。两种方式都同样安全,但是使用通配符SSL(也称为共享SSL证书)时,信任是通过客户的浏览器和Heroku而不是您的应用程序/网站之间建立的。如果SSL签名为您的domain.com,则客户可以连接到您的域名而不是Heroku子域,并在浏览器的连接信息中查看您的网站信息。如果您的网站需要与Heroku区分,则需要在默认设置之外进行SSL设置。
至于要使用哪种SSL类型和颁发机构,我不建议使用https://www.startssl.com/,因为它们提供的SSL没有高浏览器普及率,因为它们没有完全由外部根授权机构进行签名。Comodo和消费者标准Rapid/GeoTrust是最佳选择,涉及保证、认可性和易用性。您只需要一个DV(域验证)SSL,每月可以获得几个域名。

更多关于此事和Heroku SSL配置的信息可以在这里找到。


谢谢。我看到问题在于我使用了自定义域名,我意识到它需要自己的证书,因为只有 *.herokuapp.com 被他们的证书覆盖。而在 production.rb 中设置 config.force_ssl = true 可以成功地在 hereokuapp.com 地址上使用 https://。 - rigyt
1
@MuhammadUmer “证书不匹配”不是我熟悉的浏览器安全警告,因此可能需要额外的信息,但这可能意味着已安装到浏览器的 SSL 证书与您在浏览器中尝试导航到的地址不匹配。浏览器 URI(myapp.heroku.com)必须完全匹配 SSL 证书上的 CN“common name”。我认为这是您遇到的问题。 - MattSizzle
好的,那我该怎么办呢?我的意思是,Heroku支持所有子域名的SSL,为什么我的不起作用呢? - Muhammad Umer
1
您IP地址为143.198.54.68,由于运营成本限制,当前对于免费用户的使用频率限制为每个IP每72小时10次对话,如需解除限制,请点击左下角设置图标按钮(手机用户先点击左上角菜单按钮)。 - MattSizzle
嗨,感谢你到目前为止的帮助。我使用了那个工具,一切都很好,除了:证书中没有任何常见名称与输入的名称匹配...名称不匹配错误。 - Muhammad Umer
1
@MuhammadUmer 请尝试使用 https://v2ube.herokuapp.com 而不是 v2ube.heroku.com。您必须使用 herokuapp.com URL 才能使用他们提供的 SSL 证书。 :) - MattSizzle

3

1
自从这个问题被回答以来,有些事情已经发生了变化,特别是Let's Encrypt的出现和新的Heroku SSL端点,它们一起使添加免费SSL成为可能。我创建了一个gem来自动生成并自动添加证书: https://github.com/KMarshland/heroku-ssl。一旦你将heroku_ssl添加到你的gemfile中,你只需要运行以下命令:
rake heroku_ssl:update_certs

如果你不想使用gem,你可以手动完成以下任务:

1. 生成SSL证书

按照https://github.com/unixcharles/acme-client的说明生成证书。你需要注册你的电子邮件,授权域名,然后获得证书。在授权域名时,如果你只有一个服务器运行,你可以将授权文件放在公共文件夹中;否则,你将需要设置专用控制器和路由或向DNS区域文件添加文本记录。

2. 将证书添加到Heroku

下载证书后,你可以使用Heroku的Web界面或直接运行命令。

heroku certs:update fullchain.pem privkey.pem

3. 配置您的 DNS

您需要在 DNS 区域文件中设置一个 CNAME 记录,指向 [yourdomain].herokudns.com。DNS 区域文件指定了您拥有的域名上哪些 URL 映射到哪些服务器。如果您的站点已经指向了 Heroku 应用程序,则已经存在一个 CNAME 记录;您只需要更改它所指向的位置。否则,您需要添加一行新记录:

[subdomain] [TTL] IN CNAME [yourdomain].herokudns.com.

我最近在Heroku上使用了sslforfree.com,并使用自定义域名免费获得了SSL证书,只要您支付“Hobby” dyno的费用。 - rigyt

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接