EDIT (for the people who downvote)
Some questions have a deeper underlying issue that can be solved. In this case is the need of a jruby enabled web server with ssl. If your opinion differs with mine make your own post, please please don't downvote an answer that really solved someone's problem. Or even worse - downvote with no comment. Thank you.
END EDIT
I use jetty-rails gem and I coded SSL suport in it.
If u choose to use jetty-rails as well you can follow theese instructions to add SSL.
Make sure you use jetty-rails version 0.6 as current 0.8.1 is buggy.
I'm sure that glassfish too can be made to use SSL in a similar way.
I chosed jetty as it seems faster (startup) smaller and easyer to change the src.
jetty_rails-0.6/lib/jetty_rails/server.rb +32
if config[:ssl] and config[:ssl] == true
if config[:keystore] =~ /^\\/ # starts with slash => absolute dir
keystore = config[:keystore]
else # assume keystore is in cofig dir
keystore = @config[:base] + '/config/' + config[:keystore]
end
if not config[:truststore].nil? # have separate truststore
if config[:truststore] =~ /^\\/ # starts with slash => absolute dir
truststore = config[:truststore]
else # assume keystore is in cofig dir
truststore = @config[:base] + '/config/' + config[:truststore]
end
else # trustore == keystore
truststore = keystore
end
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)
else
connector = Jetty::SelectChannelConnector.new
connector.set_acceptors(config[:acceptor_size])
connector.port = config[:port]
connector.confidential_port = config[:security_port] if config[:security_port]
@server.add_connector(connector)
end
how to generate a certificate store (keystore.jks)
See here: http://docs.codehaus.org/display/JETTY/How+to+configure+SSL
RAILS_ROOT/config/jetty_rails.yml
# Config
:port: 3000
:jruby_min_runtimes: <%= config[:environment] == 'production' ? 3 : 1 %>
:jruby_max_runtimes: <%= config[:environment] == 'production' ? 6 : 2 %>
:thread_pool_max: 40
:thread_pool_min: 4
:acceptor_size: 10
# Security
: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
start the server
jruby -S jetty_rails -c config/jetty_rails.yml