2

我很难让我的新 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 证书处于活动状态时,我会收到以下消息:

肥皂界面:

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 选项卡

  • 证书 NickName 字段从我的旧别名 (mydomain) 到我的新别名 (mydomain.net),它与我在密钥库中的私钥的别名相匹配
  • 从旧密钥库 (server.keystore) 到我的新密钥库 (ssl_mydomain_net.jks) 的密钥库字段值(文件名)

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

旧 SSL 设置:

旧 SSL

新的 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文件夹中:

  • cacerts.jks
  • 密钥库.jks

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

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

4

2 回答 2

2

我需要什么?

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

从 GlobalSign 获取您的证书

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

一旦您的订单完成,您应该会收到一个 PFX 文件。将此文件复制到运行 IIS 的 Windows 服务器。

设置/更改 Payara 的主密码

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

asadmin change-master-password –savemasterpassword=true mydomain

安装证书

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

导出公钥和私钥

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

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. 转到配置 > 服务器配置 > 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。结合所有这些知识使我想出了解决方案。

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

于 2016-01-15T10:26:55.773 回答
0

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

于 2016-01-13T14:41:39.000 回答