Что я должен сделать, чтобы заставить трафик к моему рубину на приложении рельсов использовать https? Мне установили свидетельство и если я вручную печатаю «https://» в строке поиска, получая доступ к месту, мало символа замка появляется, но просто вручную идущий в www.example-app.com в моем браузере посылает трафик через http://.
Есть ли некоторая короткая конфигурация, или действительно ли это более сложно, чем это? Я никогда не должен был иметь дело с SSL прежде, поэтому извинять меня, если я кажусь, что не знаю то, что продолжается.
Я принимаю в MediaTemple в (gs), если это имеет значение, или у любого есть опыт с такой установкой.
Проверьте требование ssl_requirement.
Он позволяет указать в ваших контроллерах, какие действия должны подаваться через https, а какие действия могут подаваться через https. Затем он позаботится о перенаправлении с http на https и наоборот.
Из документации:
class ApplicationController < ActiveRecord::Base
include SslRequirement
end
class AccountController < ApplicationController
ssl_required :signup, :payment
ssl_allowed :index
def signup
# Non-SSL access will be redirected to SSL
end
def payment
# Non-SSL access will be redirected to SSL
end
def index
# This action will work either with or without SSL
end
def other
# SSL access will be redirected to non-SSL
end
end
Ruby On Rails - это каркас для приложений, а не веб-сервер. Конфигурация HTTPS, необходимая для изменения, находится на вашем веб-сервере (Apache, Nginx и etc) Config.
Это довольно легко, и вам не нужен драгоценный камень для него. Я блогировал, как перенаправить без www
в рельсах здесь . Перенаправление на HTTPS
(почти) точно так же.
class ApplicationController < ActionController::Base
before_filter :redirect_to_https
def redirect_to_https
redirect_to "https://example.com#{request.fullpath}" if !request.ssl? && request.host != "localhost"
end
end
Примените ваше до_filter на все, что вы хотите убедиться, что сохраняется за безопасностью SSL. Я обычно один для повторного использования кода и драгоценных камней, но этот смешно просто. Узнайте больше о Request.Protocol . (Обратите внимание, что в среде Ruby 1.9.3 / Rails 3.2 Окружающая среда, название request.fullpath
; в некоторых более ранних версиях это было request.request_uri
; см. Примечания выпуска и т. Д. .)