【问题标题】:Free SSL security certificate on Heroku?Heroku 上的免费 SSL 安全证书?
【发布时间】:2025-12-19 09:40:17
【问题描述】:

我将Spree Rails 应用程序推送到 Heroku,我看到它使用带有https:// 的 ssl,并且在浏览器中有一个黄色挂锁。单击此按钮会显示“身份验证”,并且证书信息显示颁发给:*.herokuapp.com

这很棒。在 Heroku 端没有任何配置或费用,我的应用程序正在使用带有有效证书的 SSL。好吧,这是一个黄色而不是绿色的挂锁,但是,嘿,免费的还不错。

我确定这是一个愚蠢的问题..但是如何在 Heroku 上使用经过验证的证书运行另一个 Rails 应用程序而无需支付 SSL 插件和购买我自己的证书?

【问题讨论】:

标签: ruby-on-rails ssl heroku


【解决方案1】:

您的浏览器正在建立的 TLS/SSL 连接是因为您通过 appname.herokuapp.com 连接到您的应用程序。这是标准的,将自动适用于您开箱即用的任何应用程序。 Heroku 提供 SSL 加密,因为您可能会将敏感信息发送到服务器,最好对您可能不一定认为敏感但您的客户端可能认为敏感的数据进行加密。所有信誉良好的提供商(SAS、Web 主机、电子邮件提供商)都将在基本域 (*.herokuapp.com) 中安装wildcard 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 配置可以找到here

【讨论】:

  • 谢谢。我看到问题是我使用的是我的自定义域,我意识到它需要自己的证书,因为只有 *.herokuapp.com 被他们的证书覆盖。在 production.rb 中设置 config.force_ssl = true 成功使用 https:// 作为 hereokuapp.com 地址。
  • @MuhammadUmer 'Certificate don't match' 不是我熟悉的浏览器安全警告,因此可能需要其他信息,但这可能意味着安装到浏览器的 SSL 证书与您尝试在浏览器中导航到的地址。浏览器 URI (myapp.heroku.com) 必须与 SSL 证书上的 CN“通用名称”完全匹配。我认为这是您遇到的问题。
  • 好的,那我该怎么办,我的意思是heroku在所有子域上都支持ssl。那为什么我的不工作。?
  • @MuhammadUmer 通过输入 app.heroku.com URL 使用 sslshopper.com/ssl-checker.html 并查看出现的内容。这应该为您提供一个很好的指示。如果没有,我将需要应用 URL 进行故障排除。
  • @MuhammadUmer 尝试使用v2ube.herokuapp.com 而不是 v2ube.heroku.com。您必须使用herokuapp.com url 才能使用他们提供的 SSL 证书。 :)
【解决方案2】:

我最近花了一些时间进行设置。它可以使用 CloudFront 和 Heroku 的代理来完成。这可能最适合用于小型项目,但到目前为止似乎效果很好!在这里查看我的帖子:

http://ksylvest.com/posts/2014-05-06/setup-free-ish-ssl-tls-on-heroku-for-ruby-on-rails-or-any-other-framework

【讨论】:

    【解决方案3】:

    自从第一次回答这个问题以来,一些事情发生了变化,特别是 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

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

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

    【讨论】:

    • 我最近在 heroku 上使用了 sslforfree.com 和一个自定义域,免费,一旦你为“爱好”测功机付费