web-dev-qa-db-ja.com

Rails 4でSSLを使用するようにWEBrickを構成する

SharePoint2013に展開したいRailsアプリがあります。

何らかの認証手段を実現するには、WEBrick serversslhttpsを提供し、porthttps://localhost:3001で着信httpsをリッスンする必要があります。残念ながら、私はサーバーの構成についてあまり経験がありません。

古いRailsバージョンの古いチュートリアルをいくつか見つけただけで、もう仕事をしていないようです。

ヒントは大歓迎です。

18
VikingR

あなたがWEBrickを要求したことは知っていますが、他の提案をしてすみませんが、 Thin =を使用することをお勧めします。 Ruby Webサーバー(より高速で軽量)なので、SSLを開始して、次のように簡単に要件を満たすことができます。

$ thin start --ssl -p 3001

Gemfileにgem'thin 'を追加することを忘れないでください;-)

25
Hugo

これがRails 3と4の両方と互換性のある私のソリューションです。

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

明らかに、自己署名証明書を生成するか、購入する必要があります。

次に、コマンドラインからWebRickを起動する場合は、Rails_SSL=true Rails sを使用します。通常、ポート443でリッスンするにはSudoが必要なので、ポートを変更するには-p 3001を追加することをお勧めします。

5
collimarco