2010-03-02 13 views

Respuesta

9

Para hacer esto con la RM rubí, utilizar el siguiente monkeypatch:

sinatra_ssl.rb:

require 'webrick/https' 

module Sinatra 
    class Application 
    def self.run! 
     certificate_content = File.open(ssl_certificate).read 
     key_content = File.open(ssl_key).read 

     server_options = { 
     :Host => bind, 
     :Port => port, 
     :SSLEnable => true, 
     :SSLCertificate => OpenSSL::X509::Certificate.new(certificate_content), 
     :SSLPrivateKey => OpenSSL::PKey::RSA.new(key_content) 
     } 

     Rack::Handler::WEBrick.run self, server_options do |server| 
     [:INT, :TERM].each { |sig| trap(sig) { server.stop } } 
     server.threaded = settings.threaded if server.respond_to? :threaded= 
     set :running, true 
     end 
    end 
    end 
end 

Luego, en su aplicación independiente:

app.rb

require 'sinatra' 
require 'sinatra_ssl' 

set :port, 8443 
set :ssl_certificate, "server.crt" 
set :ssl_key, "server.key" 

get "/" do 
    "Hello world!" 
end 
+1

Por favor asegúrese de agregar 'requerir "WEBrick/https "'también a la lista de gemas requeridas para sinatra_ssl.rb. Funciona bien de lo contrario! – sybohy

+0

Buena captura, fija. – Jacob

2

Uso JRuby intérprete + muelle de una rackup joya (http://github.com/geekq/jetty-rackup) archivo embarcadero-rackup Editar en la gema muelle de una rackup y añadir un SslSocketConnector, algo de código para ayudarle a: config

security_connector = Jetty::Security::SslSocketConnector.new 
    security_connector.set_acceptors(config[:acceptor_size]) 
    security_connector.port = config[:port] 
    security_connector.confidential_port = config[:port] 
    security_connector.keystore = keystore 
    security_connector.password = config[:password] 
    security_connector.key_password = config[:key_password].nil? ? config[:password] : config[:key_password] 
    security_connector.truststore = truststore 
    security_connector.trust_password = config[:trust_pasword].nil? ? config[:password] : config[:trust_pasword] 
    server.add_connector(security_connector) 

muestra:

# Config 
:acceptor_size: 10 
:ssl: true 
:keystore: keystore.jks 
:password: your_pass 
# :key_password: your_pass # if different 
# :truststore: truststore.jks # if different 
# :trust_pasword: your_pass # if different 

keystore.jks Generación: http://docs.codehaus.org/display/JETTY/How+to+configure+SSL

Cuestiones relacionadas