更改keystore.jks后,Glassfish管理控制台已停止

时间:2016-05-17 16:02:01

标签: ssl glassfish

我使用GF 3.1.2.2,现在我需要为我的webapp配置Lets Encrypt SSL证书。在我使用包含Lets Encrypt证书的新密码更改了默认的keystore.jks之后,我的webapp运行正常,但管理控制台没有。

server.log文件出现此错误,因为它需要默认的keytore.jks文件:

[#| 2016-05-17T11:31:15.344-0400 | SEVERE | glassfish3.1.2 | org.glassfish.admingui | _ThreadID = 72; _TreadName = Thread-2; | javax.net.ssl.SSLHandshakeException:sun .security.validator.ValidatorException:PKIX路径构建失败:sun.security.provider.certpath.SunCertPathBuilderException:无法找到所请求目标的有效证书路径; javax.net.ssl.SSLHandshakeException:sun.security.validator.ValidatorException:PKIX路径构建失败:sun.security.provider.certpath.SunCertPathBuilderException:无法找到所请求目标的有效证书路径; restRequest:endpoint = https://localhost:4848/management/domain/anonymous-user-enabled ATTRS = {} 方法= GET |#]

1 个答案:

答案 0 :(得分:1)

我迟到了3年,但谁知道也许有人仍然会读它:) 问题的原因是,管理员侦听器使用的证书不在您的新密钥库中。

admin-listener(端口4848)使用的默认证书的别名为s1as,并且随Glassfish安装一起提供。 该证书位于Default-Keystore keystore.jks中。

如果您用新密钥库进行了更改,那么Glassfish将找不到他用于管理员侦听器的证书。

这很可能是您解决问题的方法:

简单易用:

  • 停止玻璃鱼
  • 转到路径./glassfish/glassfish/domains/domain1/config中的domain.xml,无论在哪里找到名称为'cert-nickname'的属性,都将其值更改为Let's Encrypt证书的别名。
  • 重新启动Glassfish

更复杂,但更复杂:

  1. 找出您的管理员之前使用过的证书。

    • 为此,请暂时将其更改回您的旧keystore.jks。
    • 登录到 管理控制台,然后在下面查找“证书昵称” /Configurations/server-config/Http-Service/Http-Listeners/admin-listeners。 Glassfish使用的默认证书的名称为s1as。
  2. a)如果它是全新安装的Glassfish,并且管理员监听器仍使用默认证书s1as,那么我建议您切换到新证书。

    • 只需将证书昵称更改为Lets'Encrypt证书的别名,然后单击保存按钮即可。
    • 停止Glassfish
    • 切换到新的密钥库
    • 开始Glassfish

    b)如果您坚持保留旧证书,则必须通过keytool从“旧”密钥库中提取它,并将其导入到新的密钥库中。

    • 停止Glassfish
    • 使用以下命令提取旧证书:

       keytool -export -alias myOldCertificateNickname -keystore keystore.jks -file myOldCertificate.crt
      

      将myOldCertificateNickname替换为您在步骤1中找到的证书昵称!

    • 将您刚导出的旧证书导入到新的密钥库中

      keytool -import -alias myOldCertificateNickname -file myOldCertificate.crt -keystore myNewKeystore.jks
      
    • 开始Glassfish

现在这很重要! 为了使所有这些工作正常进行,您还需要知道密钥库和证书的密码!还有Glassfish的MasterPW! 因为Glassfish坚持要求所有3个密码必须相同(MasterPW,Keystore密码,证书的密码)

这是在Glassfish中安装证书的非常好的在线指南

https://www.ssls.com/knowledgebase/how-to-install-an-ssl-certificate-on-glassfish/