2012-07-10 18 views
7

İnce komut satırı üzerinden --ssl, --ssl-key-file ve --ssl-cert-file parametrelerini geçmek zorunda kalmadan, Thin üzerinden çalışan bağımsız bir Sinatra uygulamasında SSL'yi etkinleştirmenin basit bir yolunu arıyorum.Sinatra'da Thin ile SSL'yi etkinleştirebilir miyim?

Doğrudan Sinatra uygulamasında veya config.ru dosyası aracılığıyla tanımlanabilir mi?

Bu soruyu cevaplamak için birkaç saat harcadım ama şimdiye kadar işe yarayan hiçbir şey bulamadı.

+0

Komut satırı bir komut dosyasına nasıl yazılır? – lidaobing

cevap

10

Sadece birkaç saatimi kendim bulmaya çalışıyorum.

O Thin::Server.initialize onun initialization yöntemle sırasında atar ssl seçenekleri (hemen Thin::Server.new içine geçmiş olduğunuz tüm SSL seçeneklerini göz ardı onun sslnil kümelerini Backend onun örneğine, yapmayı daha delegeler. Bu işlemin ardından, gerektiği anlamına geliyor çıkıyor . Eğer bir sunucu örneği ettik sonra ayarlanan sSL seçeneklerini )

İşte bunu nasıl açıklanmıştır:

class App < Sinatra::Base 

    # ... 

    def self.run! 
    rack_handler_config = {} 

    ssl_options = { 
     :private_key_file => '/path/to/foo.key', 
     :cert_chain_file => '/path/to/bar.crt', 
     :verify_peer => false, 
    } 

    Rack::Handler::Thin.run(self, rack_handler_config) do |server| 
     server.ssl = true 
     server.ssl_options = ssl_options 
    end 
    end 
end 

App.run! 
+0

gerçekten faydalı bir örnek :-) Teşekkürler – rtacconi

9

T hese günleri (sinatra 1.4.1) run!, sunucu veren bir bloğu kabul eder. Yani bunu yapabilirsiniz: Ben Rack::SslEnforcer kullanarak SSL ile (Heroku üzerine) Sinatra ve İnce koşuyorum

MyApp.run! do |server| 
    ssl_options = { 
    :cert_chain_file => '/path/to/bar.crt', 
    :private_key_file => '/path/to/foo.key', 
    :verify_peer => false 
    } 
    server.ssl = true 
    server.ssl_options = ssl_options 
end 
+1

Çok Serin! Bu seçenekler nerede belgeleniyor? - Senden başka bir şey göremiyorum! – user1513388

+1

http://rdoc.info/github/eventmachine/eventmachine/EventMachine/Connection:start_tls burada olup bitenler. – Swizzlr

0

, bunu yaparken:

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

etkinleştirmek önce bu olmalıdır: oturumları senin dosya.

İlgili konular