本文将指导您如何在GlassFish开源应用程序服务器上进行SSL安装过程。我们使用以下软件和证书进行测试:
- Ubuntu服务器 16.04 LTS;
- 从Oracle下载门户下载的GlassFish 4.1.1;
- PositiveSSL单域证书。
要获得可以安装在您的服务器实例上的SSL证书,您需要购买一个,为您希望保护的域名生成CSR代码并激活证书。证书颁发后,证书文件将通过电子邮件发送。
将证书文件汇入密钥库
要执行这些步骤,您需要定位用于CSR代码生成的原始密钥库。您可以使用PEM编码或PKCS#7证书文件汇入到密钥库中。
PEM
要汇入PEM编码的证书,应使用您的域名.crt及相应的CA捆绑文件。如果您以单个文件(例如yourdomain.ca-bundle)收到CA捆绑,您需要使用文本编辑器打开它,并将每个证书区块保存到单独的.crt文件中。您也可以收到作为3个单独文件的证书链。根据本指南的PositiveSSL证书,我们的证书链将由AddTrustExternalCARoot.crt、COMODORSAAddTrustCA.crt、COMODORSADomainValidationSecureServerCA.crt和zbtest.crt文件组成。
我们将使用 'keytool' 工具来汇入证书。以下是命令序列:
keytool -import -trustcacerts -alias root -file AddTrustExternalCARoot.crt -keystore zbtest.jks
keytool -import -trustcacerts -alias intermediate2 -file COMODORSAAddTrustCA.crt -keystore zbtest.jks
keytool -import -trustcacerts -alias intermediate1 -file COMODORSADomainValidationSecureServerCA.crt -keystore zbtest.jks
keytool -import -trustcacerts -alias zbtest -file zbtest.crt -keystore zbtest.jks
注意:每个证书文件需要使用唯一的别名值进行汇入,并且域名证书的别名必须与密钥库别名匹配。
PKCS#7
PKCS#7格式的证书通常保存在yourdomain.cer或yourdomain.p7b文件中。这种格式设计用于将域名证书和CA捆绑合并成一个单一编码的证书区块,通常封闭在-----BEGIN PKCS7-----和-----END PKCS7-----标头之间。因此,必须仅调用一次汇入命令:
keytool -import -trustcacerts -alias zbtest -file zbtest.p7b -keystore zbtest.jks
将原始密钥库汇入Glassfish默认密钥库
在证书成功汇入到最初用CSR代码生成的密钥库之后,我们需要将证书和相应的私钥移动到名为'keystore.jks'的Glassfish默认密钥库中。在我们的情况下,它位于/opt/glassfish4/glassfish/domains/domain1/config目录中,不过该文件的路径可能会根据Glassfish安装活页夹和操作系统稍有不同。
以下keytool命令应用于将一个密钥库汇入到另一个密钥库:
keytool -importkeystore -srckeystore zbtest.jks -destkeystore keystore.jks
如果密钥库存放在不同的目录中,应在汇入命令中指定相对或绝对路径(例如,/etc/ssl/zbtest.jks)。
注意:由于终端密钥库密码和Glassfish主密码必须匹配,请确保源和目标密钥库的密码一致。如果不同,可以使用'change-master-password'子命令在指定源密钥库密码的情况下更改Glassfish主密码。此操作也会更新目标密钥库密码。
编辑Glassfish管理控制台中的http-listeners
为了将新汇入的证书绑定到Glassfish上的安全端口,我们需要打开相应的http-listener设置,并将Certificate NickName字段的值更改为域名证书的别名值:

您可以从管理控制台左侧导航面板按照此路径访问上面的页面:配置 > server-config > HTTP服务 > HTTP监听器 > http-listener-2 > SSL标签。
http-listener-2的默认端口设置为8181,虽然也可以在同一配置页的常规卷标中变更。最常用于提供网页内容的端口是443,因此也可以使用它,除非您需要为您的项目目的使用自定义端口:

当Certificate NickName和端口值更新后,单击右上角的保存按钮以应用更改。
还可以为通常在4848端口访问的Glassfish管理控制台登录页面安装相同的证书。为此,只需打开位于http-listeners相同部分的admin-listener配置页,转到SSL标签,并将Certificate NickName字段值更改为新证书的别名值。然后,单击右上角的保存按钮。
就这样 - 现在证书应已安装以供应用程序服务和访问管理控制面板。要检查安装情况,您可以使用这个在线工具。检查时确保输入正确的端口号。