2012-01-11 28 views
10

actualmente estoy usando las siguientes opciones en mi aplicación Rails para permitir HTTPS con WEBrick:¿Cómo configuro WEBrick para usar un certificado intermedio con HTTPS?

{ 
    :Port => 3000, 
    :environment => (ENV['RAILS_ENV'] || "development").dup, 
    :daemonize => false, 
    :debugger => false, 
    :pid => File.expand_path("tmp/pids/server.pid"), 
    :config => File.expand_path("config.ru"), 
    :SSLEnable => true, 
    :SSLVerifyClient => OpenSSL::SSL::VERIFY_NONE, 
    :SSLPrivateKey => OpenSSL::PKey::RSA.new(
     File.open("certificates/https/key.pem").read), 
    :SSLCertificate => OpenSSL::X509::Certificate.new(
     File.open("certificates/https/cert.pem").read), 
    :SSLCertName => [["CN", WEBrick::Utils::getservername]] 
} 

¿Cómo hago para especificar un certificado intermedio?

+0

No debe responder su propia pregunta sobre la pregunta en sí. Deberías responder tu propia pregunta con una respuesta. –

+0

Parece que el código anterior proviene de [esta publicación del blog] (https://www.altamiracorp.com/blog/employee-posts/configuring-webrick-to-use-ssl), ¿correcto? –

+0

Creo que saqué eso de la documentación de WEBrick, que era un desafío en sí mismo. Es bonita placa de caldera. No puedo hacer ningún comentario para @priteshj sin embargo. –

Respuesta

12

Me las arreglé para encontrar una respuesta después de una hora extra de googlear palabras clave. Aquí está la opción de definir un certificado intermedio:

:SSLExtraChainCert => [ 
    OpenSSL::X509::Certificate.new(
     File.open("certificates/intermediate.crt").read)] 

Tenga en cuenta que la opción requiere un objeto Array, lo que permite incluir varios certificados si es necesario.

-1

Si está utilizando los carriles 3, a continuación, modificar el script/archivo como rieles

#!/usr/bin/env ruby 
# This command will automatically be run when you run "rails" with Rails 3 gems installed from the root of your application. 
require 'rubygems' # if ruby 1.8.7 
require 'rails/commands/server' 
require 'rack' 
require 'webrick' 
require 'webrick/https' 

module Rails 
    class Server < ::Rack::Server 
     def default_options 
      super.merge({ 
       :Port => 3000, 
       :environment => (ENV['RAILS_ENV'] || "development").dup, 
       :daemonize => false, 
       :debugger => false, 
       :pid => File.expand_path("tmp/pids/server.pid"), 
       :config => File.expand_path("config.ru"), 
       :SSLEnable => true, 
       :SSLVerifyClient => OpenSSL::SSL::VERIFY_NONE, 
       :SSLPrivateKey => OpenSSL::PKey::RSA.new(
         File.open("/key/vhost1.key").read), 
       :SSLCertificate => OpenSSL::X509::Certificate.new(
         File.open("/crt/vhost1.crt").read), 
       :SSLCertName => [["CN", WEBrick::Utils::getservername]], 
      }) 
     end 
    end 
end 

APP_PATH = File.expand_path('../../config/application', __FILE__) 
require File.expand_path('../../config/boot', __FILE__) 
require 'rails/commands' 

El código anterior se modificó a partir del ejemplo de Configuring WEBrick to use SSL in Rails 3. Esto funcionó para mí.

+0

El cambio de .pem a formato .crt no cambiará la información del certificado actual presente en el archivo. Necesito hacer que WEBrick tenga conocimiento de una tercera pieza de información, el certificado intermedio. –

+0

¿puedes compartir el archivo script/rails que has estado editando? también qué versión es el ruby ​​y los rieles – PriteshJ

+0

Mi pregunta es preguntar cómo definir un certificado intermedio, no pedir una configuración que funcione sin uno. –

Cuestiones relacionadas