Ruby 通过Rack、Puma和Sinatra启用HTTPS?

Ruby 通过Rack、Puma和Sinatra启用HTTPS?,ruby,https,sinatra,rack,puma,Ruby,Https,Sinatra,Rack,Puma,我有一个用Sinatra、Rack和Puma构建的Ruby web应用程序。我使用Sinatra来实现控制器(MVC模式),每个控制器处理不同的路由,每个控制器类扩展了Sinatra::Base。我想启用TLS,以便通过HTTPS提供到服务器的所有连接 我的机架config.ru看起来像: require 'sinatra' require 'rack' # Start my database ... run Rack::URLMap.new( '/api/foo' => Fo

我有一个用Sinatra、Rack和Puma构建的Ruby web应用程序。我使用Sinatra来实现控制器(MVC模式),每个控制器处理不同的路由,每个控制器类扩展了
Sinatra::Base
。我想启用TLS,以便通过HTTPS提供到服务器的所有连接

我的机架
config.ru
看起来像:

require 'sinatra'
require 'rack'

# Start my database ...

run Rack::URLMap.new(
    '/api/foo' => FooController.new,
    '/api/bar' => BarController.new
)
美洲狮是由行李架自动拾取的

如何启用HTTPS?首先,我很乐意使用自签名证书,但如何使用有效证书配置服务器?所有这些似乎都没有很好的记录,这让我感到非常沮丧。我是否忽略了我可以在机架配置文件的顶层设置的选项,比如
set:ssl=>true
maybe

类似但无结果的SO帖子:

既然您提到使用Puma,您可以在他们的文档中找到:

需要一点安全措施吗?使用SSL套接字

$ puma -b 'ssl://127.0.0.1:9292?key=path_to_key&cert=path_to_cert'

在生产部署中,专用负载平衡器(如nginx、HAProxy、AWS ELB)通常负责SSL终止,并通过内部网络将普通HTTP流量转发给应用服务器。这些重型web服务器通常速度更快、更稳定、审计效果更好。

您想在不使用Nginx或Apache web服务器的情况下启用ssl吗?