2012-01-11 15 views
10

Obecnie używam następujących opcji w moim app Rails włączyć HTTPS z WEBrick:Jak skonfigurować WEBrick do korzystania z pośredniego certyfikatu z 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]] 
} 

Jak bym go o określenie pośredni certyfikat?

+0

Nie należy odpowiadać na własne pytanie dotyczące samego pytania. Powinieneś raczej odpowiedzieć na własne pytanie z odpowiedzią. –

+0

Wygląda na to, że powyższy kod pochodzi z [tego posta na blogu] (https://www.altamiracorp.com/blog/employee-posts/configuring-webrick-to-use-ssl), poprawny? –

+0

Myślę, że wyciągnąłem to z dokumentacji WEBrick, która sama w sobie stanowiła wyzwanie. To ładna płyta kotłowa. Nie mogę jednak komentować @priteshj. –

Odpowiedz

12

Udało mi się znaleźć odpowiedź po dodatkowej godzinie na szukanie słów kluczowych. Tutaj jest możliwość zdefiniowania pośredni certyfikat:

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

Należy pamiętać, że opcja wymaga obiektu Array, pozwalając aby dołączyć wiele certyfikatów w razie potrzeby.

-1

Jeśli używasz szyny 3, a następnie zmodyfikować skrypt plik/szyny jak

#!/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' 

Powyższy kod został zmodyfikowany z przykładu w Configuring WEBrick to use SSL in Rails 3. To działało dla mnie.

+0

Zmiana z .pem na format .crt nie zmieni faktycznych informacji o certyfikatach obecnych w pliku. Muszę poinformować WEBrick o trzeciej informacji, pośrednim certyfikacie. –

+0

Czy możesz udostępnić plik skryptu/szyny, który edytujesz? także jaka jest wersja ruby ​​i szyn – PriteshJ

+0

Moje pytanie brzmi: jak zdefiniować certyfikat pośredni, nie pytając o działającą konfigurację bez niego. –

Powiązane problemy