Настройка WEBrick для использования SSL в Rails 4
У меня есть приложение Rails, которое я хочу развернуть в SharePoint 2013.
Для достижения некоторых средств аутентификации мне нужен WEBrick server
для обслуживания ssl
https
и прослушивания входящих https на port
https://localhost:3001
. К сожалению, я не очень разбираюсь в настройке сервера.
Я нашел несколько устаревших руководств для более старой версии Rails, которые, похоже, больше не выполняют эту работу.
Приветствуются любые советы.
Ответы
Ответ 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
для изменения порта.