在 JBoss 上安装 SSL 之前,需要先创建 keystore(密钥库)、生成 CSR,随后再配置 SSL。在 Tomcat 等基于 Java 的服务器上创建 CSR 时,需先生成 keystore,再据此生成 CSR。可使用以下路径创建 Java keystore。
使用 Keytool 创建 Keystore
keytool -genkey -keyalg RSA -alias tomcat -keystore [keystore name] -keysize 2048
执行后会依次询问:
keystore 密码(请牢记);名与姓(Common Name / 域名);组织单位(Organization Unit);组织名称(Organization Name);城市/地区(City/Locality);省/州(State/Province);国家代码(2 位字母)。
随后会要求确认信息:Is CN=www.yourdomain.com, OU=..., O=..., L=..., ST=..., C=... correct? 回答「Y」或「YES」后,需为 <mykey> 输入密码,并将 keystore 保存到 JDK/bin 目录。
使用 Keystore 创建 CSR
创建 keystore 后,用以下命令生成 CSR:
keytool -certreq -alias tomcat -keyalg RSA -file certreq.csr -keystore [keystorename]
输入 keystore 密码后,将 CSR 保存到 JDK/bin 目录。CSR 内容形如:
-----BEGIN CERTIFICATE REQUEST-----
[encoded data]
-----END CERTIFICATE REQUEST-----
导入证书
将 CSR 提交给 SSL 服务商并完成配置后,你会通过邮件收到证书。将证书导入 keystore:
keytool -import -alias tomcat -trustcacerts -file cert.txt -keystore [keystorename]
配置 JBoss Web 容器
打开 Tomcat 的 server.xml 文件,找到以「Uncomment this for SSL support」开头的段落,取消注释并填入服务器密钥位置:
<Connector className="org.apache.tomcat.service.PoolTcpConnector">
<Parameter name="handler"
value="org.apache.tomcat.service.http.HttpConnectionHandler"/>
<Parameter name="port" value="8443"/>
<Parameter name="socketFactory"
value="org.apache.tomcat.net.SSLSocketFactory" />
<Parameter name="keystore" value="/usr/java/jakarta-tomcat-3.2.2/server.keystore" />
<Parameter name="keypass" value="changeit" />
</Connector>
随后将 JSSE 相关 jar 复制到 $TOMCAT_HOME/lib 目录。若使用 Jetty,打开 $JBOSS_JETTY_HOME/conf/jetty/jetty.xml 中「Uncomment this to add an SSL listener」段落,取消注释并填入服务器密钥位置:
<Call name="addListener">
<Arg>
<New class="com.mortbay.HTTP.SunJsseListener">
<Set name="Port">8443</Set>
<Set name="MinThreads">5</Set>
<Set name="MaxThreads">255</Set>
<Set name="MaxIdleTimeMs">50000</Set>
<Set name="Keystore"><SystemProperty name="jetty.home" default="."/>/etc/server.keystore</Set>
<Set name="Password">changeit</Set>
<Set name="KeyPassword">changeit</Set>
</New>
</Arg>
</Call>
安装后检查 SSL
配置完 JBoss Web 容器后,重启 JBoss 服务。安装完成后,建议使用 SSL 检测工具验证证书配置是否正确。