我使用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 |#]
答案 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证书的别名。更复杂,但更复杂:
找出您的管理员之前使用过的证书。
/Configurations/server-config/Http-Service/Http-Listeners/admin-listeners
。
Glassfish使用的默认证书的名称为s1as。a)如果它是全新安装的Glassfish,并且管理员监听器仍使用默认证书s1as,那么我建议您切换到新证书。
b)如果您坚持保留旧证书,则必须通过keytool从“旧”密钥库中提取它,并将其导入到新的密钥库中。
使用以下命令提取旧证书:
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/