获取 SSL 证书以与 Payara 4.1 一起使用

Getting SSL certificate to work with Payara 4.1

我很难让我的新 SSL 证书与 GlassFish 3.1.2.2 一起使用。我当前的 SSL 证书即将到期,所以我在 GlobalSign 订购了续订。

使用我当前的 SSL 证书,我得到以下响应(出于测试目的,这是通过 SoapUI 完成的):

HTTP/1.1 200 OK
X-Powered-By: Servlet/3.0 JSP/2.2 (Oracle GlassFish Server 3.1.2.2 Java/Oracle Corporation/1.7)
Server: Oracle GlassFish Server 3.1.2.2
Pragma: No-cache
Cache-Control: no-cache
Expires: Thu, 01 Jan 1970 01:00:00 CET
Content-Type: application/xml
Transfer-Encoding: chunked
Date: Mon, 11 Jan 2016 13:38:32 GMT

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>..(xmlresponse)..</xml>

但是,随着新的 SSL 证书处于活动状态,我收到以下消息:

SoapUI:

Error getting response; javax.net.ssl.SSLHandshakeException: Remote host closed connection during handshake.

浏览器:

This page can’t be displayed

Turn on TLS 1.0, TLS 1.1, and TLS 1.2 in Advanced settings and try connecting to  again. If this error persists, contact your site administrator.

我在 glassfish 的配置中唯一改变的是:

配置 > 服务器配置 > HTTP 服务 > Http 侦听器 > http-listener-2 > SSL 选项卡

新旧密钥库都在 C:\glassfish3\glassfish\domains\mydomain\config 文件夹中。

旧的 SSL 设置:

新 SSL 设置:

我已经联系了 GlobalSign 支持,我们验证了密钥库已正确生成。

当我 运行 keytool -list -keystore ssl_mydomain_net.jks 我得到以下应该正确的输出:

Keystore type: JKS
Keystore provider: SUN

Your keystore contains 3 entries

root, Jan 8, 2016, trustedCertEntry,
Certificate fingerprint (SHA1): <...>
intermediate, Jan 8, 2016, trustedCertEntry,
Certificate fingerprint (SHA1): <...>
<mydomain>.net, Jan 8, 2016, PrivateKeyEntry,
Certificate fingerprint (SHA1): <...>

据我判断,这与Glassfish有关。有没有人知道,因为我在这里没有选择...


2016 年 1 月 13 日更新

我从 Glassfish 3.1.2.2 升级到 Payara 4.1(基本上是 Glassfish 4.1)。我创建了一个新域并注意到默认情况下以下 jks 文件位于 mydomain/config 文件夹中:

我将自己的 jks (ssl_mydomain_net.jks) 添加到此文件夹,并在新的 SSL 映像中调整了 http-listener-2 的设置,如上所示。这给了我与本文开头提到的相同的结果 post。

我错过了什么?我是否必须对默认的 jks 文件进行一些调整?我是否必须从 keystore.jks 而不是我自己制作的密钥库创建一个 csr?

将您的新证书添加到您的服务器正在使用的 JVM 的信任库中。如果您在列出密钥库的证书时查看输出,您会发现您的新证书不是 trustedCertEntry。

我需要什么?

  • GlobalSign SSL 证书
  • Windows 安装了 IIS 的服务器
  • Payara 实例

正在从 GlobalSign 获取您的证书

在 GlobalSign 网站上订购或更新您的 SSL 证书。在此过程中,选择选项 Order with AutoCSR。新证书的密码将存在于您在创建过程中必须提供的密码之外,该密码由 GlobalSign 创建的额外字符串添加。请记住此密码,因为您将在下一阶段需要它。

订单完成后,您应该会收到一个 PFX 文件。将此文件复制到 IIS 为 运行.

的 Windows 服务器

Setting/Changing Payara 的主密码

包含您的私钥和 public 密钥的证书密码必须与 Payara 的主密码相匹配(这可以自由选择,这不是您在 GlobalSign 的认证请求的密码) .您可以通过 运行 以下命令更改主密码:

asadmin change-master-password –savemasterpassword=true mydomain

正在安装证书

  1. 右键单击 PFX 文件并选择 安装 PFX
  2. 在欢迎屏幕上,单击下一步
  3. 要导入的文件屏幕上,单击下一步,因为默认情况下 PFX 文件位置应该在那里。
  4. 输入密码。请记住,这是您在创建证书时放弃的密码,由创建的字符串 GlobalSign 扩展。
  5. Select 将此密钥标记为可导出。 选项。
  6. Select 包括所有扩展属性。 选项。
  7. 点击下一步
  8. 在证书存储 window 中,选择 将所有证书放入以下 ​​ 存储选项。
  9. 单击浏览按钮。
  10. 选择个人商店。
  11. 单击确定
  12. 单击下一步
  13. 单击完成

导出public和私钥

  1. 打开 Microsoft 管理控制台(开始 > 运行 > mmc > 确定)
  2. 单击 文件 > Add/Remove Snap-ins
  3. 在可用 snap-ins 列表下选择 证书
  4. 单击添加 按钮
  5. 在接下来的 window 中,选择 我的用户帐户 选项
  6. 单击完成
  7. 单击确定
  8. 在管理控制台中,展开证书 - 当前用户 > 个人 > 证书。如果都希望正确,您应该看到 3 个证书:GlobalSign 域验证 CA、GlobalSign 根 CA 和 mydomain.net.
  9. 右键单击 mydomain.net 条目
  10. 选择所有任务 > 导出...
  11. 在欢迎屏幕中,按下一步
  12. 选择是,导出私钥选项
  13. 点击下一步
  14. 在导出文件格式 window 中,选择 个人信息交换 - PKCS # 12 (.PFX) 和 select 如果可能,在证书路径中包括所有证书导出所有扩展属性 选项。
  15. 点击下一步
  16. 在密码 window 中,输入您的 Payara 主密码(必须匹配!)
  17. 点击下一步
  18. Select 您要放置导出 PFX 文件的位置(例如 mydomain.pfx),然后单击下一步。
  19. 点击完成

获取别名

运行以下命令找出生成的别名:

keytool -list -storetype pkcs12 -keystore mydomain.pfx

您必须输入您的密钥库密码,该密码应与您的 Payara 主密码相同(请参阅第 29 步)。

当此命令成功运行时,您应该会在导出的第一行看到您的别名。这看起来像一长串文本(例如 {fa2ebfd3-z11b-492d-2c73-f5z199732p2k}),后跟日期。复制这串文本,因为我们稍后需要它。

正在将证书添加到 Payara

这是我遗漏的两个重要步骤。我们必须将证书添加到位于 payara_install_folder/glassfish/domains/mydomain/config 中的 cacerts.jkskeystore.jks 中。这可以通过以下两个命令来完成:

keytool -importkeystore -deststorepass <payara masterpassword> \
-destkeypass <payara masterpassword> -destkeystore cacerts.jks \
-srckeystore mydomain.pfx -srcstoretype PKCS12 \
-srcstorepass <payara masterpassword> \
-alias mydomain_alias_name //in our example this would be {fa2ebfd3-z11b-492d-2c73-f5z199732p2k}

keytool -importkeystore -deststorepass <payara masterpassword> \
-destkeypass <payara masterpassword> -destkeystore keystore.jks \
-srckeystore mydomain.pfx -srcstoretype PKCS12 \
-srcstorepass <payara masterpassword> \
-alias mydomain_alias_name //in our example this would be {fa2ebfd3-z11b-492d-2c73-f5z199732p2k}

在 Payara 中设置 http-listener

  1. 打开您的 Payara 管理控制台(通常是 http://localhost:4848
  2. 转到配置 > server-config > HTTP 服务 > HTTP 侦听器 > http-listener-2
  3. 在“常规”选项卡上启用安全性
  4. 在 SSL 选项卡上,启用 SSL3 和 TLS
  5. 在证书昵称中输入 mydomain_alias_name(在我们的例子中是 {fa2ebfd3-z11b-492d-2c73-f5z199732p2k})
  6. 在密钥库字段中,输入 keystore.jks
  7. 按第保存按钮
  8. 重新启动您的域
  9. 测试它是否有效! :)

非常感谢 GlobalSign 的支持和创建指南的 Max Lam How To Install Comodo SSL Certificate Chain On Payara / Glassfish 4.x。结合所有这些知识,我想出了解决方案。

可能有一种方法可以将安装证书导出public和私钥部分替换为运行 keytool 命令。但由于我不是 100% 熟悉证书,所以我将它们排除在外。如果有人能告诉我正确的命令,请告诉我,我会更新答案。