2010-08-30 14 views
6

Özel bir Raf yapılandırması veya benzeri bir şey kullanılarak SSL seçeneklerini "raylar sunucusuna" (Rails 3.0.0 üzerinde) geçirmenin bir yolu var mı? Ben iki şey yapmaya çalışıyorum:Rails 3.0'da SSL seçeneklerini "raylar sunucusuna" nasıl geçirebilirim?

  1. hem güvenli hem de güvenli olmayan URL içeren testler Salatalık etkinleştirmek ve
  2. yeni geliştiriciler için basit şeyler yapmak, böylece kurmak gerekmez Apache ve tüm SSL/cert maddelerini bir kod satırı yazmadan önce yapılandırabilirsiniz.

2.3.8'de, tüm uygun SSL seçenekleriyle ikinci bir bağlantı noktasında özel bir WEBrick başlatacak çatallı bir betik/sunucu vardı. Tabii ki, Rails 3'e geçmeyi denediğimde havaya uçtu, bu yüzden bunu nasıl düzelteceğimi anlamaya çalışıyorum ve ideal olarak bunu birşeyi unutmamaya benzer bir şekilde yapın.

:SSLEnable  => true, 
:SSLVerifyClient => OpenSSL::SSL::VERIFY_NONE, 
:SSLPrivateKey  => OpenSSL::PKey::RSA.new(File.open(current_dir + "/config/certs/server.key").read), 
:SSLCertificate   => OpenSSL::X509::Certificate.new(File.open(current_dir + "/config/certs/server.crt").read), 
:SSLCertName => [ [ "CN", WEBrick::Utils::getservername ] ] 

ama yeni çerçevede bunu nasıl bilmiyorum: Bizim çatallı komut/server

aşağıdaki gibi seçenekleri kuruyorduk.

Yardımlarınız için teşekkürler!

cevap

5

WEBrick yerine Thin sunucusuna bir göz atın. Thin'i kullanmanın pek çok yararı var ki, hepsini burada listeleyemiyorum, ancak SSL'yi desteklediğinden, sorununuzu ele almalı.

SSL options: 
    --ssl      Enables SSL 
    --ssl-key-file PATH   Path to private key 
    --ssl-cert-file PATH   Path to certificate 
    --ssl-verify     Enables SSL certificate verification 

üretim olarak, ideal olarak Nginx veya Apache katmanında SSL işlemek istiyoruz, fakat bu geliştirme gereksinimlerini içermelidir:

thin başlayarak aşağıdaki seçenekleri geçmektedir.

1

Buraya geldiğim çözüm. script/rails'u şu şekilde değiştirdim:

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

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

# Hack our SSL certs into Thin TcpServer, only in development environment 
require 'thin' 
module Thin 
    module Backends 
    TcpServer.class_eval do 
     def initialize_with_SSL(host, port) 
     if Rails.env.development? 
      Rails.logger.info "Loading SSL certs from ./ssl_dev..." 
      @ssl = true 
      @ssl_options = { 
      :private_key_file => File.expand_path("../../ssl_dev/server.key", __FILE__), 
      :cert_chain_file => File.expand_path("../../ssl_dev/server.crt", __FILE__), 
      :verify_peer => nil 
      } 
     end 

     initialize_without_SSL(host, port) 
     end 

     alias_method :initialize_without_SSL, :initialize 
     alias_method :initialize, :initialize_with_SSL  
    end 
    end 
end 

# Must load 'rails/commands' after Thin SSL hack 
require 'rails/commands' 
İlgili konular