Как лучше всего обновить приложение rails для поддержки Facebook SSL? - PullRequest
5 голосов
/ 14 сентября 2011

С предстоящей миграцией SSL на Facebook 1 октября все приложения должны будут поддерживать соединения по HTTPS, для чего вам потребуется сертификат SSL.

  • Есть ли где-нибудь спад, как человек должен патчить приложение?
  • Придется ли вам использовать Apache и Passenger, xginx или другой сервер?
  • Есть ли бесплатные доверенные сертификаты?

1 Ответ

4 голосов
/ 15 сентября 2011

Есть ли где-нибудь спад, как человек должен исправить приложение?

Не совсем. Зачем? Потому что все зависит от того, какую версию рельсов вы используете.

Для Rails 2.x я читал / слышал о методах, включая:

  1. ModRewrite - использовать возможность веб-сервера для обнаружения и перезаписи HTTP в HTTPS. Этот метод более общий и может применяться ко всем технологиям, а не только к rails (python, java или даже .net).
  2. Использовать гем ssl_requirement - это позволяет декларативно добавлять инструкции в ваших контроллерах для перенаправления на https, если протокол http (https://github.com/retr0h/ssl_requirement). Несмотря на простоту, вашему приложению ruby ​​придется обрабатывать запрос, и я не уверен, как быстрая ssl_requirement is.
  3. Использовать промежуточное программное обеспечение стойки (rack-ssl, rack-ssl -forcer gem) - это исправляет обработку запросов рельсов, так что перенаправление обрабатывается задолго до того, как оно попадет на любой контроллер. Это также настраивается (вы можете сопоставить на основе пути и т. Д.) И, вероятно, лучше, чем вариант 2.

Для Rails 3.1 он поддерживается в фреймворке. Вам просто нужно сделать это:

# config/application.rb
module MyApp
  class Application < Rails::Application
    config.force_ssl = true
  end
end

Придется ли вам использовать Apache и Passenger?

Не обязательно. Есть и другие варианты, такие как NGinx и Passenger. Но в целом, да, вам, вероятно, понадобится соответствующий веб-сервер, который будет обрабатывать часть запроса в виде SSL.

Как правило, веб-сервер должен находиться перед вашим приложением. Он должен быть настроен для обработки трафика SSL и перенаправления запросов в ваше приложение (http и https). Здесь вы можете использовать Apache или NGinx.

Пассажир является «плагином» в Apache / NGinx для обработки запросов к вашему приложению. На этом этапе SSL обычно не является проблемой (т.е. запрос теперь не зашифрован). Затем ваше приложение должно обработать запрос. Здесь вы можете определить, является ли протокол протоколом http или https, и при необходимости дать браузеру указание для перенаправления.

Есть ли бесплатные доверенные сертификаты?

Нет. Доверенные сертификаты обычно подписываются центром сертификации. Эти ребята обычно должны проверить, что ваш домен и компания или частное лицо, владеющее доменом, являются подлинными и реальными. Для этого вы платите деньги. Существует множество провайдеров, которые могут выдать вам сертификат SSL на сумму около 100 долларов США. Еще немного, немного меньше.

Сертификаты обычно привязаны к домену. И вы платите больше за совпадения подстановочных доменов (например, * .myapp.com). Если вам нужен сертификат для разработки, вы можете создать самозаверяющий сертификат.

Я написал статью , в которой показано, как настроить HTTPS в локальном экземпляре Многие из этапов также являются общими для производства. В статье показано, как настроить его для POW и NGinx, но настройка для Apache и Passenger не слишком отличается. Конфигурация Apache отличается. Но установка и настройка Passenger должны быть такими же, как и в среде http. Просто убедитесь, что защищенный виртуальный хост в вашей конфигурации Apache указывает на ваше приложение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...