有没有办法为多个域创建自签名 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证书,有没有办法处理这种情况?
由于
答案 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。