如何解决GlassFish Server提示Keystore被篡改或密码不正确问题
GlassFish 部署Java应用keystore.jks报错解决方案
内部异常:java.sql.SQLException: 分配连接时出错。原因:无法分配连接:无法打开文件:C:\Users\nguye\GlassFish_Server500\glassfish\domains\domain1/config/keystore.jks [Keystore was tampered with, or password was incorrect]
该报错的核心原因是GlassFish无法正常读取域目录下的密钥库文件,要么是文件本身被损坏,要么是访问密码和配置的主密码不匹配,可按以下步骤排查修复:
步骤1:验证密钥库状态
使用JDK自带的keytool工具检测文件是否正常:
- 打开命令行,执行命令:
keytool -list -keystore C:\Users\nguye\GlassFish_Server500\glassfish\domains\domain1\config\keystore.jks - 输入GlassFish默认密钥库密码
changeit,如果能正常输出密钥条目说明文件未损坏,属于密码配置不匹配问题;如果提示密码错误或文件格式无效,属于文件损坏问题。
步骤2:密码不匹配问题修复
- 如果你修改过GlassFish域的主密码,需要同步更新密钥库密码:
- 先停止运行的domain1域,执行命令:
asadmin change-master-password --savemasterpassword=true domain1 - 按提示输入新的主密码,完成后重启域,进入管理控制台测试JDBC连接池的Ping连通性,正常后即可重新部署应用。
- 先停止运行的domain1域,执行命令:
- 如果你未修改过密码,检查JDBC连接池的冗余配置:
- 登录GlassFish管理控制台,进入「资源」-「JDBC」-「JDBC连接池」,打开你创建的连接池配置页
- 切换到「附加属性」标签,移除所有和SSL、keystore、truststore相关的配置项(本地非SSL连接的数据库不需要配置这些参数)
- 保存配置后点击「Ping」测试连接,成功后重新部署应用即可。
步骤3:密钥库文件损坏修复
- 如有keystore.jks的备份文件,直接替换
C:\Users\nguye\GlassFish_Server500\glassfish\domains\domain1\config\路径下的损坏文件,重启域即可。 - 无备份的情况下重新生成密钥库:
- 先备份config目录下原有损坏的keystore.jks、cacerts.jks文件
- 执行命令生成新的密钥库,密码设置为和域主密码一致:
keytool -genkey -alias s1as -keyalg RSA -keystore keystore.jks -keysize 2048 - 将生成的keystore.jks移动到域的config目录下,重启域后重新配置连接池即可。
内容的提问来源于stack exchange,提问作者Nguyễn Hữu Thái
相关产品推荐
相关产品推荐

