How to make Sinatra work over HTTPS/SSL? How to make Sinatra work over HTTPS/SSL? ruby ruby

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 think using rack-ssl is the best option.

Then you just do:

class Application < Sinatra::Base  use Rack::SSL  get '/' do    'SSL FTW!'  endend

and all http:// calls are redirected to https://


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.