【问题标题】:Disabling SSL for a Heroku App为 Heroku 应用禁用 SSL
【发布时间】:2013-07-20 12:51:51
【问题描述】:

我最近更改了在 Heroku 上运行的 Rails 应用程序的域。我将原来的重定向到新的,在过去的几个月里,两者都在运行 SSL。我试图从原始域中删除 SSL,因为它所做的只是重定向。

我做了我认为应该做的一切:

  • 在 production.rb 中使用 config.force_ssl = false 在应用中关闭 SSL
  • 将 DNS ALIAS 和 CNAME 更改为指向“myapp.herokuapp.com”
  • 删除了 SSL 端点和证书

如果我访问 myapp.herokuapp.com,一切都很好,但如果我访问 myapp.com 或 www.myapp.com,它会自动尝试将我带到该站点的安全版本 https://myapp.com,我从浏览器收到标准安全错误警告。

我错过了什么吗?是缓存问题吗? DNS更改启动需要时间吗?我在几台机器/浏览器上尝试过,问题在所有机器/浏览器上都是一致的。

最坏的情况,我绝对可以重新添加 SSL 端点,但这似乎有点矫枉过正。

【问题讨论】:

    标签: ruby-on-rails-3 ssl heroku


    【解决方案1】:

    除了 Jan 所说的之外,这是我为达到目的所做的。

    在 application_controller.rb 中:

    before_filter :expire_hsts
    
    [...]
    private
      def expire_hsts
        response.headers["Strict-Transport-Security"] = 'max-age=0'
      end
    

    在生产中.rb

    config.force_ssl = false
    

    清除网络浏览器的缓存,就是这样!

    【讨论】:

    • 不适合我。 “我们很抱歉,但有些不对劲。”显示在我的页面上。
    【解决方案2】:

    config.force_ssl = true 启用 Strict Transport Security 标头(HSTS)和一年的 max-age。请参阅此issue。这样的标头强制支持它的浏览器通过 HTTPS 联系服务器一年。这是为了防止中间人将 HTTPS 连接降级为 HTTP 的攻击。

    对于使用HSTS 提供服务的生产站点,从 HTTPS 中移除并不是很容易。您应该通过 HTTPS 为您的网站提供服务,并返回带有 max-age=0HSTS 标头以重置一年设置。问题是决定您需要保留 HTTPS 多长时间。要绝对确保所有客户端都已切换,您应该这样做一年。您可能会决定在较短的时间内执行此操作,但可能会为不常访问的客户破坏网站。

    【讨论】:

    • 仅供参考,我发现以下内容对于让我的浏览器在更改配置后忘记使用 ssl 也很有用:support.mozilla.org/en-US/questions/1027355。这当然只适用于您自己的浏览器(但在我的情况下,我还没有与任何人共享 url)。因此,如果您的网站已经有访问者,这对他们没有帮助(除非他们在自己的计算机上做同样的事情)。
    猜你喜欢
    • 1970-01-01
    • 2017-08-10
    • 2013-05-11
    • 1970-01-01
    • 2020-07-13
    • 1970-01-01
    • 2016-04-24
    • 2018-11-21
    • 1970-01-01
    相关资源
    最近更新 更多