我正在尝试为我的瘦服务器Web应用启用SSL,以便它可以通过HTTPS工作。
我做了以下事情: -
启动瘦Web服务器 MyApp.run! :host => '127.0.0.1',:port => 9090,:sslenable =>是的,:sslverifyclient => OpenSSL的:: SSL :: VERIFY_NONE, :sslcertificate => '.ssl / server_key.pem',: sslprivatekey => '.ssl / key.pem'
我使用Ruby中的openssl模块生成了一个自签名证书和私钥,创建了一个名为.ssl的目录,并将其作为pem文件存储在那里。
我用于我的网络应用程序的Web框架是Sinatra。我也用以下方式使用rack-ssl gem。
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吗?
答案 0 :(得分:1)
我使用Rack::SslEnforcer使用SSL在Heroku上运行Sinatra和Thin,执行此操作:
if production?
require 'rack/ssl-enforcer'
use Rack::SslEnforcer
end
这应该是之前你文件中的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设置为秘密和长期存在的东西。