Comme le dit le titre, Google ne donne rien d'utile à ce sujet.
Comment configurer et configurer HTTPS/SSL pour les applications SINATRA?
Comment créer une route HTTPS?
Je n'ai jamais utilisé HTTPS pour mes applications avant et n'avez aucune expérience de rack de peau/peu importe, alors j'apprécie les réponses détaillées.
Je suppose que vous devez configurer votre serveur Web, pas Sinatra, pour travailler avec SSL. Dans Sinatra, vous pouvez utiliser request.secure?
Méthode de vérification de l'utilisation SSL.
SSL + NGinx: le premier article , le second .
cela semble le faire pour moi:
require 'sinatra/base'
require 'webrick'
require 'webrick/https'
require 'openssl'
CERT_PATH = '/opt/myCA/server/'
webrick_options = {
:Port => 8443,
:Logger => WEBrick::Log::new($stderr, WEBrick::Log::DEBUG),
:DocumentRoot => "/Ruby/htdocs",
:SSLEnable => true,
:SSLVerifyClient => OpenSSL::SSL::VERIFY_NONE,
:SSLCertificate => OpenSSL::X509::Certificate.new( File.open(File.join(CERT_PATH, "my-server.crt")).read),
:SSLPrivateKey => OpenSSL::PKey::RSA.new( File.open(File.join(CERT_PATH, "my-server.key")).read),
:SSLCertName => [ [ "CN",WEBrick::Utils::getservername ] ]
}
class MyServer < Sinatra::Base
post '/' do
"Hellow, world!"
end
end
Rack::Handler::WEBrick.run MyServer, webrick_options
[Bonne-tête à http://www.networkworld.com/columns/2007/090507-dr-internet.html ]
Je pense que l'utilisation rack-ssl est la meilleure option.
Ensuite, vous venez de faire:
class Application < Sinatra::Base
use Rack::SSL
get '/' do
'SSL FTW!'
end
end
et tout http://
Les appels sont redirigés vers https://
J'ai modifié le code de RICHARD_BW pour pouvoir le fermer ou le redémarrer avec CTRL + C:
require 'sinatra/base'
require 'webrick'
require 'webrick/https'
require 'openssl'
class MyServer < Sinatra::Base
post '/' do
"Hello, world!\n"
end
end
CERT_PATH = '/opt/myCA/server/'
webrick_options = {
:Port => 8443,
:Logger => WEBrick::Log::new($stderr, WEBrick::Log::DEBUG),
:DocumentRoot => "/Ruby/htdocs",
:SSLEnable => true,
:SSLVerifyClient => OpenSSL::SSL::VERIFY_NONE,
:SSLCertificate => OpenSSL::X509::Certificate.new( File.open(File.join(CERT_PATH, "server.crt")).read),
:SSLPrivateKey => OpenSSL::PKey::RSA.new( File.open(File.join(CERT_PATH, "server.key")).read),
:SSLCertName => [ [ "CN",WEBrick::Utils::getservername ] ],
:app => MyServer
}
Rack::Server.start webrick_options