具有多个域的JBOSS的自签名SSL证书

时间:2012-11-30 14:27:31

标签: apache2 ssl-certificate jboss5.x apache-config self-signed

有没有办法为多个域创建自签名 SSL证书?我的环境是jboss-5.1.0.GA。

我已使用以下java keytool命令为单个域创建了自签名SSL证书。

 keytool -genkey -alias jbosskey -keypass changeit -keyalg RSA -keystore    server.keystore
 *Answer the prompts.  Use myHostname when asked for first/last name
 keytool -export -alias jbosskey -keypass changeit -file server.crt -keystore   server.keystore
 keytool -import -alias jbosscert -keypass changeit -file server.crt -keystore server.keystore

然后我在JBOSS server.xml中启用SSL,如下所示;

 <Connector protocol="HTTP/1.1" SSLEnabled="true" 
       port="7443" address="${jboss.bind.address}"
       scheme="https" secure="true" clientAuth="false" 
       keystoreFile="${jboss.server.home.dir}/conf/server.keystore"
       keystorePass="changeit" sslProtocol = "TLS" />

这很好用。现在我需要为此证书添加另一个单独的域名。

请注意,这不是通配符证书我在谈论哪些支持子域名。

我需要做的是,将单独的域名添加到单个密钥库文件中。

P.S。

我正在研究apache + JBOSS环境。 apache服务器作为代理服务器。

我可以在apache httpd-ssl.conf配置中为不同的域提供单独的SSL证书文件。但是当我来到JBOSS时,我不确定如何处理它。

如果我们使用apache作为代理(这意味着在apache中配置ssl),我们可以忽略来自JBOSS的SSL吗?

我试图忽略条目(keystoreFile =“$ {jboss.server.home.dir} /conf/server.keystore”)但它出错了。

如果没有支持多个域的SSL证书,有没有办法处理这种情况?

由于

2 个答案:

答案 0 :(得分:1)

如果我理解正确,您可以让您的Apache服务器处理SSL身份验证,然后如果代理正在处理它,Jboss可以忽略SSL证书(JBoss设计允许​​控制/授权SSL证书来自部署,在这种情况下听起来不必要)

我有类似的设置,其中托管在其他地方的代理处理SSL身份验证&amp;只需通过DMZ将请求转发给JBoss服务器,然后可以忽略证书。

答案 1 :(得分:0)

如果我可以给出其他答案-Apache + JBoss的一个非常常见的设置是将Apache用作JBoss的某种负载平衡器/反向代理。 SSL通信完全由Apache完成。一种更可取的方法是,在Apache和JBoss之间使用AJP而不是HTTP,因为它在Servlet请求中设置了所有必要的信息,而不是使用X-forwarded -...信息作为需要显式读取的附加标头。

在这种情况下(使用mod_jk或mod_cluster),您也可以非常容易地在Apache之后管理JBoss的多个实例。当然-Apache和JBoss之间的通信未加密(据我所知AJP不支持SSL)。

如果您希望进行加密通信,而Apache仍在进行所有外部SSL通信,则Apache和JBoss之间的内部通信仅需包含一个证书,而Apache需要信任该证书。

还有一个-您可以将一个证书/私钥导入一个已经存在的密钥库中,然后再将一个证书/私钥放入一个密钥库中。使用keystore -list,您可以查看密钥库的内容。我还没有测试过,如果JBoss将使用SNI识别传入请求的正确证书/密钥。但是默认情况下,较新的JBoss和Java支持SNI。