8

--sslThin コマンド ライン経由で ,--ssl-key-fileおよび--ssl-cert-fileパラメータを渡すことなく、Thin 経由で実行されているスタンドアロンの Sinatra アプリケーションで SSL を有効にする簡単な方法を探しています。

それらを Sinatra アプリ内または config.ru ファイル経由で直接定義することは可能ですか?

この質問に対する答えを探すのに数時間を費やしましたが、これまでのところ、うまくいくものは見つかりませんでした。

4

3 に答える 3

10

私はこれを自分で理解しようとして数時間を費やしました。

はメソッド中にオプションをThin::Server.initialize破棄することがわかります( のインスタンスに委譲し、 に渡した ssl オプションを無視して、 をすぐに に設定します。これは、サーバーをインスタンス化したにssl オプションを設定する必要があることを意味します。 )sslinitializationBackendsslnilThin::Server.new

方法は次のとおりです。

class App < Sinatra::Base

  # ...

  def self.run!
    rack_handler_config = {}

    ssl_options = {
      :private_key_file => '/path/to/foo.key',
      :cert_chain_file => '/path/to/bar.crt',
      :verify_peer => false,
    }

    Rack::Handler::Thin.run(self, rack_handler_config) do |server|
      server.ssl = true
      server.ssl_options = ssl_options
    end
  end
end

App.run!
于 2012-11-17T01:48:06.113 に答える
9

最近 (sinatra 1.4.1)run!は、サーバーを生成するブロックを受け入れます。だからあなたはこれを行うことができます:

MyApp.run! do |server|
  ssl_options = {
    :cert_chain_file => '/path/to/bar.crt',
    :private_key_file => '/path/to/foo.key',
    :verify_peer => false
  }
  server.ssl = true
  server.ssl_options = ssl_options
end
于 2013-03-19T22:12:48.240 に答える
1

Rack::SslEnforcerを使用して SSL で Sinatra と Thin (Heroku 上) を実行しています。

if production?
    require 'rack/ssl-enforcer'
    use Rack::SslEnforcer
end

これは、ファイルで :sessions を有効にする前に行う必要があります。

于 2015-03-21T07:52:08.390 に答える