获取SSL证书以使用Payara 4.1

时间:2016-01-11 16:19:46

标签: web-services ssl https glassfish payara

我很难让我的新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的配置中唯一改变的是:

配置&gt; server-config&gt; HTTP服务&gt; Http听众&gt; http-listener-2&gt; SSL标签

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

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

旧的SSL设置:

Old SSL

新的SSL设置:

New 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
  • keystore.jks

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

我错过了什么?我是否必须将某些内容调整为默认的jks文件?我是否必须从keystore.jks而不是我自己创建的密钥库创建一个csr?

2 个答案:

答案 0 :(得分:2)

我需要什么?

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

从GlobalSign获取证书

在GlobalSign网站订购或续订SSL证书。在此过程中,选择使用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. 点击完成
  14. 导出公钥和私钥

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

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

      keytool -list -storetype pkcs12 -keystore mydomain.pfx
      

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

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

      将证书添加到Payara

      这是我失踪的两个重要步骤。我们必须将证书添加到位于payara_install_folder/glassfish/domains/mydomain/config cacerts.jks keystore.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. 转到配置&gt; server-config&gt; HTTP服务&gt; HTTP监听器&gt; HTTP监听-2
      3. 在“常规”选项卡上启用安全性
      4. 在“SSL”选项卡上,启用SSL3和TLS
      5. 在证书NickName中输入mydomain_alias_name(在我们的案例中为{fa2ebfd3-z11b-492d-2c73-f5z199732p2k})
      6. 在Key Store字段中,输入keystore.jks
      7. 按“保存”按钮
      8. 重新启动您的域名
      9. 测试它是否有效! :)
      10. 非常感谢GlobalSign支持和创建指南How To Install Comodo SSL Certificate Chain On Payara / Glassfish 4.x的Max Lam。结合所有这些知识使我想出了解决方案。

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

答案 1 :(得分:0)

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