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

问题描述 投票:1回答:2

有没有办法为多个域创建自签名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" />

这工作正常。现在我需要为此证书添加另一个单独的域名。

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

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

附:

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

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

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

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

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

谢谢

apache2 ssl-certificate jboss5.x apache-config self-signed
2个回答
1
投票

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

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


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需要信任该证书。

还有一个 - 您可以将多个证书/私钥放入密钥库,只需将它们导入已存在的密钥库即可。使用密钥库列表,您可以查看密钥库的内容。我从未测试过的是,如果JBoss将使用SNI来识别传入请求的正确证书/密钥。但是较新的JBoss和Java默认支持SNI。

© www.soinside.com 2019 - 2024. All rights reserved.