31

Rails 3より前は、スクリプト/サーバーファイルを変更してSSLパラメーターを追加し、サーバーコマンドにHTTPSバージョンのWEBrickを使用するように指示できました。これらのスクリプトがすべてなくなったので、Rails 3または4でこれを機能させる方法を知っている人はいますか?

4

2 に答える 2

27

scriptsRails 4のディレクトリはなくなりましたが、binディレクトリは残ります。bin/railsスクリプトを編集することで、WEBrick を SSL 証明書で動作させることができます。Rails 4 と Ruby 2.1.1 でテスト済み、rbenv でインストール。

これの多くは、このブログ投稿このスタック オーバーフローの質問からのものです。

#!/usr/bin/env ruby

require 'rails/commands/server'
require 'rack'
require 'webrick'
require 'webrick/https'

if ENV['SSL'] == "true"
  module Rails
      class Server < ::Rack::Server
          def default_options
              super.merge({
                  :Port => 3001,
                  :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("certs/server.key").read),
                  :SSLCertificate => OpenSSL::X509::Certificate.new(
                                   File.open("certs/server.crt").read),
                  :SSLCertName => [["CN", WEBrick::Utils::getservername]],
              })
          end
      end
  end
end

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

SSL 環境変数が true に設定されている場合、app ディレクトリから Rails サーバーを起動すると、SSL 対応サーバーが起動され、環境変数が省略されている場合はデフォルトの Rails 設定が保持されるようになりました。

$ SSL=true rails s
=> Booting WEBrick
=> Rails 4.1.0 application starting in development on https://0.0.0.0:3001
=> Run `rails server -h` for more startup options
=> Notice: server is listening on all interfaces (0.0.0.0). Consider using 127.0.0.1 (--binding option)
=> Ctrl-C to shutdown server
[2014-04-24 22:59:10] INFO  WEBrick 1.3.1
[2014-04-24 22:59:10] INFO  ruby 2.1.1 (2014-02-24) [x86_64-darwin13.0]
[2014-04-24 22:59:10] INFO  
Certificate:
    Data:
...

事前に生成された証明書を使用したくない場合はUtils::create_self_signed_cert、この回答で概説されているように、 WEBrick を使用できます。

自動生成された自己署名 SSL/HTTPS 証明書を使用するように WEBrick を構成する

于 2014-04-25T03:57:26.773 に答える
22

WEBrick での SSL/HTTPS の代替: Thin での SSL/HTTPS

Rails アプリで HTTPS/SSL を使用するように WEBrick をセットアップする代わりに、すぐに使用できる HTTPS/SSL をセットアップするための便利なオプションが用意されているThin サーバーを使用するように切り替えることができます。

シンのインストール

まず、Thin を gem として Gemfile に追加します。

gem 'thin'

次にbundle install、コマンド ラインから実行します。

開発環境での Thin HTTPS/SSL の使用

ローカル開発環境でHTTPS/SSL を使用して Rails アプリをテストするだけの場合は、次のように実行します。

thin start --ssl

SSL/HTTPS 接続を検証可能で安全なものにするには、認証局からの有効な SSL 証明書を使用する必要があるため、これは実稼働環境には適していないことを強調する必要があります。

追加オプション

Thin に渡すことができるその他のオプションもあります。を実行すると、それらの完全なリストを取得できますthin --help。たとえば、自分の IP アドレスとポートを指定し、Thin をバックグラウンド プロセスにデーモン化します。

thin start --ssl \
  --address <ip-address> \
  --port <port> \
  --daemonize

SSL 証明書で Thin HTTPS/SSL を使用する

Thin に SSL 証明書 (たとえば、有効な認証局から取得したもの) を使用するように指示する場合は、次のオプションを使用できます。

thin start --ssl \
  --ssl-cert-file <path-to-public-certificate> \
  --ssl-key-file <path-to-private-key>
于 2014-04-17T19:18:27.477 に答える