javaws.exe显示证书与keytool -list结果不匹配的技术咨询
javaws与keytool证书不互通的原因及解决
核心问题是javaws和keytool默认使用完全独立的证书存储库:
- javaws(Java Web Start)使用用户级证书库,路径为:
C:\Users\<你的用户名>\AppData\LocalLow\Sun\Java\Deployment\security\trusted.certs
这是每个用户单独的证书存储,和系统级JRE的证书库无关。 - 你用keytool查看的是JRE系统级证书库
cacerts,路径为:C:\Program Files (x86)\Java\jre1.8.0_261\lib\security\cacerts
这是全局的信任证书集合,javaws默认不会读取这里的内容。
验证方法
执行以下命令查看javaws的用户证书库(替换<你的用户名>为实际系统账号名):
'C:\Program Files (x86)\Java\jre1.8.0_261\bin\keytool.exe' -list -keystore 'C:\Users\<你的用户名>\AppData\LocalLow\Sun\Java\Deployment\security\trusted.certs'
你会看到通过javaws对话框导入的证书都在这里。
解决方式
如果需要让两者互通证书,有两种方案:
- 手动迁移证书:
- 用keytool将javaws用户库中的证书导出,再导入到系统级
cacerts中;反之亦然。
- 用keytool将javaws用户库中的证书导出,再导入到系统级
- 配置javaws使用系统级证书库:
- 找到Java部署配置文件
deployment.properties(路径通常是C:\Users\<你的用户名>\AppData\LocalLow\Sun\Java\Deployment\deployment.properties) - 添加一行配置:
deployment.security.trusted.cacerts=C:\\Program Files (x86)\\Java\\jre1.8.0_261\\lib\\security\\cacerts - 保存后重启javaws,就能看到系统级
cacerts中的证书了。
- 找到Java部署配置文件
对应你的案例解释
- 案例1:javaws默认的用户证书库初始为空,所以进入证书管理界面看不到任何证书;
- 案例2:你查看的是系统级
cacerts,这是JRE自带的信任证书集合,所以会列出98个证书。
内容的提问来源于stack exchange,提问作者Diego
相关产品推荐
相关产品推荐

