使用带有SSL的glassfish gem(或其他web服务器)

时间:2010-02-17 09:00:57

标签: ssl glassfish jruby

我的目标是使用glassfish gem 在Windows服务器上部署一个简单的rails应用程序。

我可以毫不费力地将glassfish gem用于常规http,但是我现在需要添加SSL安全性,而且我找不到任何关于如何在glassfish gem中启用 https 的链接。

有没有人成功设置glassfish gem以支持SSL?

是否有其他方法可以在Windows上通过SSL提供rails应用程序而无需安装任何其他软件(例如IIS,Glassfish,jBoss)?

1 个答案:

答案 0 :(得分:0)

编辑(对于downvote的人)
有些问题有更深层次的问题可以解决。在这种情况下需要一个带有ssl的jruby启用的Web服务器。如果您的意见与我自己的帖子有所不同,请不要选择真正解决某人的问题的答案。或者更糟糕的是 - 没有评论就投票。谢谢。
结束编辑

我使用jetty-rails gem并在其中编码SSL支持。
如果你也选择使用jetty-rails,你可以按照说明添加SSL 确保使用jetty-rails版本0.6,因为当前0.8.1是错误的 我敢肯定,玻璃鱼也可以以类似的方式使用SSL 我选择了码头,因为它似乎更快(启动)更小,更容易改变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

如何生成证书存储区(keystore.jks)

见这里:http://docs.codehaus.org/display/JETTY/How+to+configure+SSL

RAILS_ROOT /配置/ 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

启动服务器

jruby -S jetty_rails -c config/jetty_rails.yml