rails ruby-on-rails ssl ruby-on-rails-4 localhost webrick

ruby-on-rails - https rails



Configurando WEBrick para usar SSL en Rails 4 (2)

Tengo una aplicación Rails que quiero implementar en SharePoint 2013.

Para lograr algunos medios de autenticación, necesito que el WEBrick server sirva a https ssl y escuche https entrantes en el port https://localhost:3001 . Desafortunadamente, no tengo mucha experiencia con la configuración del servidor.

Solo he encontrado algunos tutoriales obsoletos para versiones anteriores de Rails, que parece que ya no hacen el trabajo.

Cualquier consejo es muy apreciado.


Aquí está mi solución que es compatible con ambos Rails 3 y 4.

Agregue el siguiente código en la parte superior de los 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

Obviamente necesitas generar un certificado autofirmado o comprar uno.

Luego, cuando desee iniciar WebRick desde la línea de comandos, use RAILS_SSL=true rails s . Por lo general, necesita sudo para escuchar en el puerto 443, por lo que es posible que desee agregar -p 3001 para cambiar el puerto.


Sé que solicitó WEBrick y me disculpa por sugerir otra cosa, pero realmente le recomendaría que use el servidor web Thin ruby (más rápido y más liviano), para que también pueda iniciar SSL y cumplir con sus requisitos tan fácil como:

$ thin start --ssl -p 3001

Simplemente no olvides agregar gema ''delgada'' en tu Gemfile ;-)