簡體   English   中英

為瘦服務器和sinatra啟用SSL

[英]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。

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:// 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM