[英]Enabling SSL for a thin server and sinatra
我正在嘗試為我的瘦服務器Web應用程序啟用SSL,以便它可以通過HTTPS工作。
我做了以下事情: -
推出瘦Web服務器MyApp.run! :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文件。
我用於我的網絡應用程序的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時,我收到ssl連接錯誤,其中包含以下詳細信息:
無法與服務器建立安全連接。 這可能是服務器的問題,或者可能需要您沒有的客戶端身份驗證證書。 錯誤代碼:ERR_SSL_PROTOCOL_ERROR
任何人都可以告訴我如何最好地配置瘦服務器以啟用SSL?
我使用Rack :: SslEnforcer使用SSL在Heroku上運行Sinatra和Thin,執行此操作:
if production?
require 'rack/ssl-enforcer'
use Rack::SslEnforcer
end
這應該在您enable :sessions
文件中的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設置為秘密和長期存在的東西。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.