Payara 5.194启动失败:报java.security.KeyStoreException: JCEKS not found
解决Payara 5.194启动失败(JCEKS异常)及根证书过期提示问题
我来帮你一步步拆解解决这两个问题——先搞定导致Payara启动失败的核心异常,再处理证书过期的警告提示:
一、解决java.security.KeyStoreException: JCEKS not found启动异常
这个异常是Payara读取密码别名存储时,找不到JCEKS密钥库支持或配置出错导致的,按以下步骤排查:
1. 验证JDK是否包含JCEKS支持
JCEKS是Java加密扩展密钥库,部分精简版JDK会缺失这个功能:
- 打开终端运行命令:
keytool -list -storetype JCEKS - 如果输出提示
NoSuchAlgorithmException: JCEKS KeyStore not available,说明你用的JDK不支持JCEKS,更换为完整的Oracle JDK 8/11或OpenJDK 8/11(Payara 5.194推荐Java 8,兼容Java 11)。
2. 检查Payara密码别名配置
异常来自PasswordAliasConfigSource,说明Payara加载密码别名时出了问题:
- 找到Payara域的配置文件
domain.xml(默认路径:payara5/glassfish/domains/domain1/config/domain.xml)。 - 搜索
<password-alias>标签,或者检查MicroProfile Config中是否有password.alias.xxx这类引用密码别名的配置:- 如果不需要这些密码别名,暂时注释掉相关配置,再尝试启动Payara,看是否能正常启动。
- 如果需要保留密码别名:
- 确认配置里指定的密钥库文件路径正确、文件未损坏。
- 重新创建JCEKS密钥库:
keytool -genkey -alias your-alias-name -keystore payara.jceks -storetype JCEKS - 更新
domain.xml中对应密钥库的路径和密码,确保配置无误。
3. 重置Payara密码别名存储
如果密钥库文件损坏,可以尝试重置:
- 删除Payara域下的
config/keystore.jceks文件(如果存在)。 - 用Payara的
asadmin工具重新创建密码别名:asadmin create-password-alias your-alias-name - 按照提示输入密码后重启Payara。
二、处理根证书过期提示
你看到的6个过期证书都是Java默认信任的根CA证书(比如AddTrust、Staat der Nederlanden等),这些已经被淘汰,需要更新JDK的信任库:
1. 删除过期的根证书
- 找到JDK的
cacerts信任库文件:- Java 8:
jdk/jre/lib/security/cacerts - Java 9+:
jdk/lib/security/cacerts
- Java 8:
- 列出所有证书,找到过期证书的别名(比如
addtrustqualifiedcacert、staatdernederlandeng2等):keytool -list -keystore cacerts -storepass changeit - 逐个删除过期证书:
# 删除AddTrust Qualified CA Root keytool -delete -alias addtrustqualifiedcacert -keystore cacerts -storepass changeit # 删除AddTrust Class 1 CA Root keytool -delete -alias addtrustclass1cacert -keystore cacerts -storepass changeit # 删除Staat der Nederlanden Root CA - G2 keytool -delete -alias staatdernederlandeng2 -keystore cacerts -storepass changeit # 删除KEYNECTIS ROOT CA keytool -delete -alias keynectiscacert -keystore cacerts -storepass changeit # 删除Entrust.net Certification Authority (2048) keytool -delete -alias entrustnetca2048 -keystore cacerts -storepass changeit
2. 导入替代的最新根CA
这些过期根CA的功能已被其他CA替代(比如AddTrust被DigiCert替代),可以导入对应的最新根CA证书:
- 从官方渠道下载最新根CA证书(比如DigiCert Global Root CA)。
- 用
keytool导入:keytool -import -trustcacerts -alias digicertglobalrootca -file /path/to/DigiCertGlobalRootCA.crt -keystore cacerts -storepass changeit
完成以上步骤后重启Payara,应该就能正常启动,同时证书过期的提示也会消失。
内容的提问来源于stack exchange,提问作者usertest
相关产品推荐
相关产品推荐

