在 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 检测工具验证证书配置是否正确。