gpt4 book ai didi

ruby - 为瘦服务器和 sinatra 启用 SSL

转载 作者:数据小太阳 更新时间:2023-10-29 08:08:17 26 4
gpt4 key购买 nike

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

我做了以下事情:-

启动瘦网络服务器MyApp.运行! :host => '127.0.0.1', :port => 9090, :sslenable => true, :sslverifyclient => OpenSSL::SSL::VERIFY_NONE, :sslcertificate => '.ssl/server_key.pem', :sslprivatekey => '.ssl/key.pem'

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

我为我的网络应用程序使用的网络框架是 Sinatra。我还通过以下方式使用 rack-ssl gem..

我的应用程序.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://localhost:9090 时,我希望看到我的应用程序正常显示,但有一个挂锁和一个交叉,因为任何 http 请求都被重定向到 https,我看到错误“网页不可用”。但是,当我删除 ssl-rack ruby​​ gem 并重新启动我的应用程序并转到 https://localhost:9090,i 时收到 ssl 连接错误,详细信息如下:

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

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

最佳答案

我使用 Rack::SslEnforcer 在 Heroku 上通过 SSL 运行 Sinatra 和 Thin ,这样做:

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

这应该是之前您在您的文件中启用:sessions。因此,在配置应用程序时,需要将 Rack::SslEnforcer 放置在 session 部分之上。

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

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 设置为 secret 且较长的内容。

关于ruby - 为瘦服务器和 sinatra 启用 SSL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28432921/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com