为瘦服务器和 sinatra 启用 SSL

2023-12-26

我正在尝试为我的瘦服务器 Web 应用程序启用 SSL,以便它可以通过 HTTPS 运行。

我已完成以下操作:-

启动瘦网络服务器 我的应用程序.运行! :主机 => '127.0.0.1', :端口 => 9090, :sslenable => true, :sslverifyclient => OpenSSL::SSL::VERIFY_NONE, :sslcertificate => '.ssl/server_key.pem', :sslprivatekey => '.ssl/key.pem'

我使用 Ruby 中的 openssl 模块生成了自签名证书和私钥,创建了一个名为 .ssl 的目录并将它们作为 pem 文件存储在那里。

我的 Web 应用程序使用的 Web 框架是 Sinatra。我还按以下方式使用rack-ssl gem..

myapp.rb

require 'rack/ssl'

class MyApp < Sinatra ::Base
use Rack::SSL
use Rack::Session::Cookie,
        :key => '_rack_session', 
        :path => '/',
        :expire_after => 2592000, 
        :secret => ''

...
end

当我去http://本地主机:9090 http://localhost:9090,我希望看到我的应用程序正常显示,但带有挂锁和十字,因为任何 http 请求都被重定向到 https,并且我看到错误“网页不可用”。但是,当我删除 ssl-rack ruby​​ gem 并重新启动我的应用程序并转到https://localhost:9090,i https://localhost:9090,i收到 ssl 连接错误,详细信息如下:

无法与服务器建立安全连接。这可能是服务器的问题,或者可能需要您没有的客户端身份验证证书。 错误代码:ERR_SSL_PROTOCOL_ERROR

谁能告诉我如何最好地配置瘦服务器以启用 SSL?


我使用 SSL 在 Heroku 上运行 Sinatra 和 Thin机架::SslEnforcer https://github.com/tobmatth/rack-ssl-enforcer,这样做:

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

这应该是before you enable :sessions在你的文件中。因此,当您配置应用程序时,Rack::SslEnforcer 需要放置在会话部分之上。

有些不相关,但也许仍然相关,您可以考虑添加:

require 'encrypted_cookie'

cookie_config = {        
  :key          => 'usr',
  :path         => "/",
  :expire_after => 86400, # one day in seconds
  :secret       => ENV["COOKIE_KEY"], 
  :httponly     => true
  }
cookie_config.merge!( :secure => true ) if production?

use Rack::Session::EncryptedCookie, cookie_config

您还需要将环境中的 COOKIE_KEY 设置为秘密且较长的内容。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为瘦服务器和 sinatra 启用 SSL 的相关文章

  • 将 ruby​​ 类转换为模块比使用改进更好的方法?

    Module refine http ruby doc org core 2 0 0 Module html method i refine方法接受一个类和一个块并返回一个细化模块 所以我想我可以定义 class Class def inc
  • 回滚后是否应该删除迁移

    我对 ruby 和 Rails 相当陌生 刚刚开始了解迁移 我的问题是回滚后删除迁移的最佳实践或正确时间是什么 到目前为止 我读到的内容是回滚后是否删除迁移的观点问题 但是在团队中工作时删除迁移是否有任何重大影响 以及保留迁移文件相对于删除
  • 如何使用 Ruby on Rails 3 检查 HTTP 请求的“Content-Length”字段?

    我正在使用 Ruby on Rails 3 在我的视图文件中我有以下代码 为了避免服务器过载 我会在服务器接收上传文件之前检查上传文件的大小 这是因为 按下表单的提交按钮 服务器会先完整接收文件 然后再检查文件 我知道一个HTTP 请求有标
  • Emacs、ruby:将 do 结束块转换为大括号,反之亦然

    我经常发现自己转换这样的代码 before do something end to before something 有没有办法在 emacs 中自动执行此任务 我使用 ruby mode 和 rinary 但它们在这里没有太大帮助 rub
  • 我必须使用什么加密程序来通过 HTTP 协议发送加密的“电子邮件”和“密码”值?

    我正在使用 Ruby on Rails 3 我想通过 HTTP 协议发送 电子邮件 和 密码 值 我知道 我不应该 但我需要 我需要从发送用户凭据我的客户申请到一个我的服务应用 我可以使用公共和私人RSA密钥来实现这一点 但如果是这样 我不
  • 在 Rails 中呈现路由错误的 404 页面

    我试图在 Rails 中渲染集成的 404 页面作为例外 我尝试了这个 但仍然收到路由错误页面 posts controller rb def destroy if current user username post email post
  • 随机采样数组的唯一子集

    如果我有一个数组 a 1 2 3 如何随机选择数组的子集 以使每个子集的元素都是唯一的 也就是说 对于a可能的子集是 1 2 3 1 2 2 3 1 2 3 我无法生成所有可能的子集 因为 a 的实际大小非常大 因此有很多很多子集 目前 我
  • 回形针:样式取决于模型(has_many 多态图像)

    我已将模型设置为使用多态图像模型 这工作正常 但是我想知道是否可以更改每个模型的 styles 设置 找到了一些使用 STI 模型 Art has many images as gt imageable Image belongs to i
  • 从 Jekyll 插件向页面添加属性

    假设我想要一个包含如下内容的页面 h1 page comment count Comment s h1 for c in page comment list div strong c title strong br c content di
  • SSL 和会话劫持/固定

    快问 SSL 是否完全防止会话劫持 固定 谢谢 不可以 例如 在以下情况下可能会发生劫持 被黑客入侵的 CA 根签署无效证书 该证书可用于发起中间人攻击 被黑客攻击的域名所有者电子邮件收件箱使黑客有可能购买经过域名验证的证书 错误的密钥策略
  • Ruby on Rails Webpacker 找不到 asset_pack_path 下的图像

    我在使用 Ruby on Rails Webpacker 在视图中包含图像时遇到问题 当我尝试使用 html img 标签和 asset pack path 在我的视图中插入图像时 出现错误 我的图像位于app javascript ima
  • 如何在 Ruby 中创建自定义排序方法

    我想指定一个自定义块方法 通过评估两个属性来对对象数组进行排序 然而 经过多次搜索 我没有找到任何没有的例子 lt gt 操作员 我想比较a to b if a x less than b x return 1 if a x greater
  • 无法将 TXT 记录设置为 Freenom 提供商中的域

    我想为分配给 Azure 中 WordPress 的域启用 SSL 我的域名是在 Freenom 中创建的 要完成该过程 我需要从 Azure 手动验证域 Azure 域验证 https i stack imgur com 4park jp
  • 启动同一作业的多个延迟作业进程

    我在运行多个工作人员的设置中使用延迟作业 就我的问题而言 这并不重要 但假设我运行 10 个工作线程 当前在开发模式下执行此操作 我遇到的问题是两个不同的工作人员有时开始处理同一项工作 调用我的工作对象上的执行方法 据我所知 延迟作业正在使
  • Capistrano:deploy.rb 文件重构

    我的deploy rb中有以下代码 namespace app do desc copies the configuration frile from shared config yml to config task copy config
  • 通过 SO_RCVTIMEO 套接字选项在 Ruby 中设置套接字超时

    我试图通过 SO RCVTIMEO 套接字选项在 Ruby 中设置套接字超时 但它似乎对任何最近的 nix 操作系统都没有影响 使用 Ruby 的 Timeout 模块不是一个选择 因为它需要为每个超时生成和连接线程 这可能会变得昂贵 在需
  • 未知属性:user_id

    我在执行 current user stories build 期间收到错误未知属性 user id class User lt ActiveRecord Base has many stories class name Story for
  • 使用 openssl 检查服务器安全协议

    我有一个框架应用程序 它根据使用方式连接到不同的服务器 对于 https 连接 使用 openssl 我的问题是 我需要知道我连接的服务器是否使用 SSL 还是 TLS 以便我可以创建正确的 SSL 上下文 目前 如果我使用错误的上下文尝试
  • 为 Rails 上的 postgresql 创建用户

    我选择 postgresql 作为我的 Rails 数据库 但当我尝试运行 rake db create all 时 我遇到了一个明显常见的错误 即 致命 角色 app 不存在 我找到了两种解决方案 但我不确定哪一种是正确的 有一个网站说
  • 添加两个 ActiveRecord::Relation 对象[重复]

    这个问题在这里已经有答案了 如何将两个关系添加在一起 当我尝试 运算符时 它返回一个数组 但我需要它来返回关系 谢谢 麦克风 Try new relation relation merge another relation

随机推荐

  • java.net.ConnectException

    我看过一些关于这个主题的帖子 但我仍然不知道出了什么问题 以下是代码 import java sql public class SQL public static void main String args Connection conn
  • 从IP地址获取位置[关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 Locked 这个问题及其答案是locked help locked posts因为这个问题是题外话
  • AttributeError:“float”对象没有属性“split”

    我正在调用这条线 lang modifiers keyw strip for keyw in row language modifiers split if not isinstance row language modifiers flo
  • android.view.Surface - OutOfResourcesException

    我有这个奇怪的错误 但没有找到任何可能的解决方案 在使用我的应用程序后 问题总是随机出现 该应用程序几乎可以在所有设备上完美运行 仍然存在此问题的设备之一正在运行 CM 7 1 0 我知道很多 CM7 用户都在抱怨类似的问题 不幸的是 我有
  • 如何有条件地在 JSP 页面中显示一个 div 的内容而不是另一个 div 的内容?

    我对JSP开发很陌生 我有以下疑问 如果进入 JSP 页面我有 2div像这样 div p SUCCESS p div div p FAILURE p div 我必须根据 a 的值仅显示这些 div 之一status变量放入Http会话只能
  • 比较文件内字母顺序的最佳方法?

    我有一个文件 其中有很多字母序列 其中一些序列可能是相同的 所以我想对它们进行全部比较 我正在做这样的事情 但这并不完全是我想要的 for line in fl line line split for elem in line if gt
  • Go HTTP 服务器性能问题

    我正在编写一个事件收集器http 服务器 该服务器将承受重负载 因此 在 http 处理程序中 我只是反序列化事件 然后在 goroutine 中的 http 请求 响应周期之外运行实际处理 由此 我发现如果我以每秒 400 个请求的速度访
  • Json反序列化,创建重复对象

    展示问题的模型比首先尝试解释它更容易 internal class Program private static void Main string args Class1 class1 new Class1 Name Scott Class
  • 有没有办法在调用构造函数之前设置属性?

    是的 我知道依赖项应该传递给构造函数 我不是在问编码风格或该做什么和不该做什么 我的应用程序中的许多类都与数据库驱动程序类的实例相关联 为此 我使用 PHP 的后期静态绑定创建了一个抽象工厂类 该类的唯一成员是保存驱动程序引用的属性 它看起
  • 目标 C:多名代表

    我很好奇是否以及如何使控制器成为两个不同对象的委托 这是允许的还是像 Java 中的多重继承 假设我想要一个控制器来响应
  • Openshift 上的 Scalatra 应用 - 设置 Jetty IP

    我正在尝试使用 DIY 盒在 Openshift 上部署一个最小的 Scalatra 应用程序 我已经成功让 SBT 正常工作 但是当涉及到container start 我收到错误 FAILED SelectChannelConn ema
  • 如何设置浮动 div 的宽度以占用剩余空间而不将其他 div 向下推?

    对于我想要制作的布局的一部分 我想使用三个 div 所有 div 都彼此相邻浮动 左侧和右侧有一个最大宽度设置 效果很好 但我希望中间的 div 扩大其宽度以填充剩余空间 澄清一下 左右 div 的宽度可以是从 0px 到最大宽度的任何位置
  • 枚举,在 switch case 中使用

    我定义了一个枚举 其中包含方法返回类型 如 String Float List Double 等 我将在 switch case 语句中使用它 例如我的枚举是 public enum MethodType DOUBLE LIST STRIN
  • 在多个故事板文件之间共享场景。 iPhone 与 iPad

    我正在使用故事板开发通用应用程序 我有 2 个故事板文件 一款适用于 iPhone 一款适用于 iPad 我将有一些场景想要在两者之间共享 并且我想使用故事板编辑器来设置它们 常见的是 UITableViewController 及其原型单
  • android:来自片段的菜单项单击事件

    我有一个带有操作栏的应用程序 并且菜单因主要活动而膨胀 我想拦截片段内的点击事件 但我不知道如何 你能帮我吗 主要活动 Override public boolean onCreateOptionsMenu Menu menu getMen
  • 如何使用预测和标准获得不同的结果

    我正在尝试使用 Grails 中的条件加载不同的父级 查询如下 Query def criteria Parent createCriteria results criteria list max params max offset par
  • Google Apps 脚本 JDBC 连接问题

    我在 google apps 脚本中使用 jdbc 连接器连接到任何 mysql 数据库时遇到问题 我正在使用教程代码 var conn Jdbc getConnection jdbc mysql host or ip 3306 datab
  • Windows 10 - System.Speech.Synthesis 无法获取移动版语音

    在我的 Windows 10 语言中 我安装了 2 个英语版本 US 英国 因此 在 设置 gt 时间和语言 gt 语音 中 在 文本转语音 部分下 我可以看到以下选项 微软大卫移动 微软乔治移动 微软苏珊移动 微软榛子移动 微软 Zira
  • 将 PDF 插入 Excel、Python

    我编写了一个 python 脚本 用于创建包含各种计算的电子表格 我想进一步将 pdf 插入电子表格 pdf 是理想的 但 jpeg 也可用 我翻遍了xlwt 没有找到任何东西 谁能建议一种方法来实现这一目标 要实际插入 PDF 您可能只需
  • 为瘦服务器和 sinatra 启用 SSL

    我正在尝试为我的瘦服务器 Web 应用程序启用 SSL 以便它可以通过 HTTPS 运行 我已完成以下操作 启动瘦网络服务器 我的应用程序 运行 主机 gt 127 0 0 1 端口 gt 9090 sslenable gt true ss