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 ;-)