Подтвердить что ты не робот

Настройка WEBrick для использования SSL в Rails 4

У меня есть приложение Rails, которое я хочу развернуть в SharePoint 2013.

Для достижения некоторых средств аутентификации мне нужен WEBrick server для обслуживания ssl https и прослушивания входящих https на port https://localhost:3001. К сожалению, я не очень разбираюсь в настройке сервера.

Я нашел несколько устаревших руководств для более старой версии Rails, которые, похоже, больше не выполняют эту работу.

Приветствуются любые советы.

4b9b3361

Ответ 1

Я знаю, что вы попросили WEBrick и извините меня за предложение чего-то еще, но я бы порекомендовал вам использовать Thin рубиновый веб-сервер (быстрее и легче), поэтому вы также можете запустить SSL и выполнить свое требование так же просто, как:

$ thin start --ssl -p 3001

Не забудьте добавить gem 'thin' в свой Gemfile; -)

Ответ 2

Здесь мое решение, которое совместимо с Rails 3 и 4.

Добавьте следующий код вверху bin/rails:

require 'rubygems'
require 'rails/commands/server'
require 'rack'
require 'webrick'
require 'webrick/https'

module Rails
  class Server < ::Rack::Server
    def default_options
      ssl_default_options = {
        :Port => 443,
        :SSLEnable => true,
        :SSLVerifyClient => OpenSSL::SSL::VERIFY_NONE,
        :SSLPrivateKey => OpenSSL::PKey::RSA.new(File.open(File.expand_path('../../config/cert/server_development.key', __FILE__)).read),
        :SSLCertificate => OpenSSL::X509::Certificate.new(File.open(File.expand_path('../../config/cert/server_development.crt', __FILE__)).read),
        :SSLCertName => [['CN', WEBrick::Utils::getservername]]
      }
      ENV['RAILS_SSL'] ? super.merge(ssl_default_options) : super
    end
  end
end

Вам, очевидно, нужно создать самоподписанный сертификат или купить его.

Затем, когда вы хотите запустить WebRick из командной строки, используйте RAILS_SSL=true rails s. Обычно вам нужно sudo прослушивать порт 443, поэтому вы можете добавить -p 3001 для изменения порта.