2012-01-11 29 views
10

Tôi hiện đang sử dụng các tùy chọn sau trong ứng dụng Rails của tôi để cho phép HTTPS với WEBrick:Tôi làm cách nào để định cấu hình WEBrick để sử dụng chứng chỉ trung gian với 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]] 
} 

Làm thế nào tôi sẽ đi về xác định chứng chỉ trung gian?

+0

Bạn không nên trả lời câu hỏi của riêng bạn về chính câu hỏi đó. Bạn nên trả lời câu hỏi của riêng mình bằng câu trả lời. –

+0

Có vẻ như mã trên xuất phát từ [bài đăng trên blog này] (https://www.altamiracorp.com/blog/employee-posts/configuring-webrick-to-use-ssl), đúng không? –

+0

Tôi nghĩ rằng tôi đã kéo nó từ tài liệu WEBrick, đó là một thách thức trong chính nó. Đó là tấm hơi đẹp. Tôi không thể bình luận cho @priteshj mặc dù. –

Trả lời

12

Tôi đã quản lý để tìm câu trả lời sau một giờ thêm googling cho từ khóa. Đây là tùy chọn để xác định một chứng chỉ trung gian:

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

Lưu ý rằng tùy chọn yêu cầu một đối tượng Array, cho phép bạn bao gồm nhiều chứng chỉ nếu cần.

-1

Nếu bạn đang sử dụng đường ray 3, sau đó sửa đổi kịch bản/đường ray nộp như

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

Đoạn mã trên đã được sửa đổi từ ví dụ trong Configuring WEBrick to use SSL in Rails 3. Điều này làm việc cho tôi.

+0

Thay đổi từ định dạng .pem sang .crt sẽ không thay đổi thông tin chứng chỉ thực tế có trong tệp. Tôi cần phải làm cho WEBrick nhận thức được một phần thông tin thứ ba, chứng chỉ trung gian. –

+0

bạn có thể chia sẻ tệp script/rails bạn đã chỉnh sửa không? phiên bản ruby ​​và đường ray là gì – PriteshJ

+0

Câu hỏi của tôi là hỏi cách xác định chứng chỉ trung gian, không yêu cầu cấu hình hoạt động mà không có. –

Các vấn đề liên quan