升级rails应用程序以支持Facebook SSL的最佳方法是什么?

Sim*_*ton 5 ssl facebook ruby-on-rails facebook-graph-api

随着即将于10月1日在Facebook上进行SSL迁移,所有应用都必须支持通过HTTPS进行连接,因此您需要SSL证书.

  • 是否应该如何修补应用程序?
  • 你必须使用Apache和Passenger,xginx或其他服务器吗?
  • 有免费的可信证书吗?

Blu*_*ish 4

是否有关于如何修补应用程序的详细说明?

并不真地。为什么?因为这完全取决于您运行的 Rails 版本。

对于 Rails 2.x,我读过/听说过的技术包括:

  1. ModRewrite - 使用网络服务器的能力来检测并将 HTTP 重写为 HTTPS。这种技术更通用,可以适用于所有技术,而不仅仅是 Rails(Python、Java 甚至 .net)。
  2. 使用 ssl_requirement gem - 如果协议是 http (https://github.com/retr0h/ssl_requirement),这允许您在控制器中以声明方式添加指令以重定向到 https。虽然很简单,但您的 ruby​​ 应用程序必须处理该请求,并且我不确定 ssl_requirement 有多快。
  3. 使用机架中间件(rack-ssl、rack-ssl-enforcer gem) - 这会修补rails的请求处理,以便重定向在到达任何控制器之前得到很好的处理。这也是可配置的(您可以根据路径等进行匹配)并且可能比选项 2 更好。

对于 Rails 3.1,它被支持到框架中。你只需要这样做:

# config/application.rb
module MyApp
  class Application < Rails::Application
    config.force_ssl = true
  end
end
Run Code Online (Sandbox Code Playgroud)

您必须使用 Apache 和 Passenger 吗?

不必要。还有其他选项,例如 NGinx 和 Passenger。但总的来说,您可能需要一个合适的 Web 服务器放在前面,处理请求的 SSL 部分。

通常,您的应用程序之前需要有一个 Web 服务器。它需要配置为处理 SSL 流量,并将请求定向到您的应用程序(http 和 https)。这里你可以使用 Apache 或 NGinx。

Passenger 作为 Apache/NGinx 中的“插件”来处理对应用程序的请求。此时,SSL 通常不是问题(即请求现在未加密)。然后您的应用程序必须做的是处理请求。您可以在此处检测协议是 http 还是 https,并指示浏览器在必要时进行重定向。

有免费的可信证书吗?

不会。受信任的证书通常由证书颁发机构签名。这些人通常必须检查您的域名以及持有该域名的公司或个人是否真实。为此,您需要付费。有很多提供商可以向您颁发 SSL 证书,价格约为 100 美元。有的多一些,有的少一些。

证书通常锁定到某个域。并且您为通配符域匹配支付更多费用(例如 *.myapp.com)。如果您需要开发证书,则可以生成自签名证书。

我写了一篇文章,向您展示如何在本地开发实例上使用 HTTPS。许多步骤对于生产也是常见的。本文向您展示了如何为 POW 和 NGinx 进行设置,但为 Apache 和 Passenger 进行设置并没有太大不同。Apache 配置不同。但 Passenger 安装和设置应该与 http 环境相同。只需确保 Apache 配置中的安全虚拟主机指向您的应用程序。