首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >我可以在Sinatra中启用SSL with Thin吗?

我可以在Sinatra中启用SSL with Thin吗?
EN

Stack Overflow用户
提问于 2012-07-10 08:38:21
回答 3查看 4K关注 0票数 8

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

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

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

EN

回答 3

Stack Overflow用户

发布于 2012-11-17 09:48:06

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

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

下面是如何做的:

代码语言:javascript
运行
复制
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!
票数 10
EN

Stack Overflow用户

发布于 2013-03-20 06:12:48

现在(sinatra 1.4.1) run!接受一个产生服务器的块。所以你可以这样做:

代码语言:javascript
运行
复制
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
票数 9
EN

Stack Overflow用户

发布于 2015-03-21 15:52:08

我使用Rack::SslEnforcer运行Sinatra和Thin (在Heroku上)和SSL,执行以下操作:

代码语言:javascript
运行
复制
if production?
    require 'rack/ssl-enforcer'
    use Rack::SslEnforcer
end

这应该是在您的文件中启用:sessions之前。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11405161

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档