ssl - 我可以使用 Thin 在 Sinatra 中启用 SSL 吗?

标签 ssl sinatra thin

我正在寻找一种简单的方法来在通过 Thin 运行的独立 Sinatra 应用程序中启用 SSL,而无需传递 --ssl--ssl-key-file--ssl-cert-file 参数通过瘦命令行。

是否可以直接在 Sinatra 应用程序中或通过 config.ru 文件定义它们?

我花了几个小时寻找这个问题的答案,但到目前为止还没有找到任何有效的方法。

最佳答案

我只是花了几个小时试图自己解决这个问题。

事实证明,Thin::Server.initialize 在其initialization 方法中丢弃了ssl 选项(它委托(delegate)给它的Backend,它会立即将其 ssl 设置为 nil,忽略您传递给 Thin::Server.new 的任何 ssl 选项>。这意味着您必须实例化服务器后设置 ssl 选项。)

方法如下:

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!

关于ssl - 我可以使用 Thin 在 Sinatra 中启用 SSL 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11405161/

相关文章:

sqlite - Rack::Lint::LintError:状态必须 >=100 被视为整数

ruby-on-rails - Heroku:Rails 服务器永远工作

ruby - Thin 与 Ramaze 发生严重碰撞

android - 使用 .cer 而不是 .p12 对 android 上的服务器进行身份验证

node.js - 如何启用基于 NodeJS (Express) 的服务器的 SSL 连接

javascript - sinatra + angular.js + 加载模板

ruby-on-rails - 如何在 rails 中创建可部署的 [war in java]

java - Spring - RestTemplate 调用 https rest 服务时出错(证书错误)

node.js - 自签名证书仅适用于 localhost,不适用于 127.0.0.1

ruby - sinatra config.ru : what is the configure block for?