我使用GF 3.1.2.2,现在我需要为我的Web应用程序配置Lets Encrypt SSL证书。在我用包括Lets Encrypt证书在内的新证书更改了默认的keystore.jks后,我的网络应用程序运行良好,但管理控制台没有
server.log文件出现此错误,因为它需要默认的keystore.jks文件:
[#|2016-05-17T11:31:15.344-0400|SEVERE|glassfish3.1.2|org.glassfish.admingui |_ThreadID=72;_ThreadName=Thread-2;|javax.net.ssl.ssl握手异常:sun.security.validator.ValidatorException:PKIX路径构建失败:sun.seecurity.provider.certpath.SunCertPathBuilderException:无法找到到请求目标的有效证书路径;javax.net.ssl.ssl握手异常:sun.security.validator.ValidatorException:PKIX路径构建失败:sun.scurity.provider.certpath.SunCertPathBuilderException:无法找到到请求目标的有效证书路径;restRequest:端点=https://localhost:4848/management/domain/anonymous-用户已启用属性={}method=GET|#]
我迟到了3年,但谁知道也许有人读了它:)出现问题的原因是管理侦听器使用的证书不在您的新密钥库中。
管理员侦听器(端口4848)使用的默认证书别名为"s1as",并且随Glassfish安装提供。此证书位于Default Keystore Keystore.jks中。
如果您用新的密钥库更改了密钥库,那么Glassfish就找不到他用于管理侦听器的证书。
这很可能是你的问题的解决方案:
简单的一个:
- 停止玻璃鱼
- 转到路径
./glassfish/glassfish/domains/domain1/config
中的domain.xml,如果您在其中找到名称为"cert昵称"的属性,请将该值更改为Let's Encrypt证书的别名 - 重新启动Glassfish
更硬但更复杂:
-
找出管理员侦听器以前使用过的证书
- 暂时改回旧的keystore.jks
- 登录到管理控制台,然后在下面查找证书昵称CCD_ 2。Glassfish使用的默认证书的名称为s1as
-
a) 如果它是一个新的Glassfish安装,并且管理侦听器仍然使用默认证书s1as,那么我建议您切换到新的证书。
- 只需将Certificate NickName更改为Lets'Encrypt证书的别名,然后单击保存按钮
- 停止玻璃鱼
- 切换到您的新密钥库
- 启动Glassfish
b) 如果您坚持保留旧证书,则必须通过keytool从"旧"密钥库中提取证书,并将其导入到新的密钥库中。
- 停止玻璃鱼
-
使用以下命令提取旧证书:
keytool -export -alias myOldCertificateNickname -keystore keystore.jks -file myOldCertificate.crt
用您在步骤1中找到的证书昵称替换myOldCertificateNickname
-
将新导出的旧证书导入新的密钥库
keytool -import -alias myOldCertificateNickname -file myOldCertificate.crt -keystore myNewKeystore.jks
-
启动Glassfish
现在这是最重要的 要使所有这些工作正常,您还需要知道密钥库和证书库的密码!还有玻璃鱼大师!因为Glassfish坚持所有3个密码必须相同(MasterPW、Keystore密码、证书密码)
这里有一个非常好的在线指南,用于在Glassfish 中安装证书
https://www.ssls.com/knowledgebase/how-to-install-an-ssl-certificate-on-glassfish/