How to make Sinatra work over HTTPS/SSL?
this seems to do it for me:
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 endRack::Handler::WEBrick.run MyServer, webrick_options
[hat tip to http://www.networkworld.com/columnists/2007/090507-dr-internet.html]
I guess you need to setup your Web-server, not Sinatra, to work with SSL. In Sinatra you can use the request.secure?
method to check for the SSL usage.
SSL + Nginx: the first article, the second one.