使用godaddy在heroku上添加SSL证书

时间:2012-07-28 02:13:10

标签: ruby-on-rails ruby-on-rails-3 ssl ruby-on-rails-3.1 ssl-certificate

所以这就是问题所在。

我有一个使用SSL的网站。 (https://www.archerandreed.com/)它很棒。

当您在浏览器中输入archerandreed.com/时,一切仍然很好。

不幸的是,当您在浏览器中输入https://archerandreed.com/http://archerandreed.com/时,系统会向您发送SSL证书警告。

我想我可以为www.archerandreed.com&&添加证书。 archerandreed.com但heroku不再接受2个ssl端点。

那么可能的解决方案是什么?我假设一个解决方案是购买外卡域,但这很痛苦。我的应用程序是rails 3.2.6。如果它们是子域,是否可以强制使用SSL?我可以在routes.rb或config / environments / production.rb中执行此操作吗?感谢您提前提供任何帮助。

2 个答案:

答案 0 :(得分:2)

所以我觉得我找到了我想要的东西,我认为这应该以某种方式记录在heroku ...

1)关闭config.force_ssl = true:

config.force_ssl = false  # config/environments/production.rb

2)在application_controller中有以下内容:

class ApplicationController < ActionController::Base
  before_filter :ensure_domain
  before_filter :force_ssl
  APP_DOMAIN = 'www.archerandreed.com'

protected
  def force_ssl
    if Rails.env.production?
      redirect_to :protocol => 'https' unless request.ssl?
    end
  end

  def ensure_domain
    if Rails.env.production? && ((request.env['HTTP_HOST'] != APP_DOMAIN) )
      # HTTP 301 is a "permanent" redirect
      redirect_to( "https://#{APP_DOMAIN}", :status => 301) and return
    end
  end
end

答案 1 :(得分:0)

另一个解决方案(如其他几个线程中提到的那样 - 例如here)是使用DNS提供程序,如DNSimple,允许使用ALIAS记录。然后为您的裸域添加ALIAS记录(在本例中为archerandreed.com),因为您不想使用A记录将您的裸域指向heroku。

然后,您可以在production.rb中使用config.force_ssl,而不必向应用程序控制器添加过滤器。