1

有没有办法为多个域创建自签名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 证书,是否有任何方法可以处理这种情况?

谢谢

4

2 回答 2

1

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

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

于 2013-01-25T10:14:53.970 回答
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。

于 2018-07-27T07:21:59.040 回答