复制 java 密钥库

Lui*_*rno 2 java ssl keystore

我的本地开发计算机上有一个有效的密钥库,其中包含用于通过 HTTPS 访问 Web 服务的证书。

我通过以下方式在我的项目中访问此密钥库:

System.setProperty("javax.net.ssl.truststore", "C:\\<workspaceprojectPath>\\SIPkeystore\\truststore.jks"); // sollte wohl auch ohne Keystore klappen
System.setProperty("javax.net.ssl.keyStore", "C:\\<workspaceprojectPath>\\SIPkeystore\\SIPkeystore.jks");  
System.setProperty("javax.net.ssl.keyStorePassword", "SECRET");
Run Code Online (Sandbox Code Playgroud)

现在我想从另一个项目访问该证书。我在那里提供了另一个(本地)项目目录中密钥库的相同(完整)路径。

显然,jvm 仍然找到该路径并且正在设置该属性,但是在访问 Web 服务时,我收到相同的错误消息,就好像我根本没有添加密钥库一样。

当尝试运行该应用程序时,我得到一个

sun.security.validator.ValidatorException: PKIX path building failed:   
     sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid 
     certification path to requested target
Run Code Online (Sandbox Code Playgroud)

是否可以复制现有的密钥库?当我们将应用程序部署到服务器时,这一点也很重要。该应用程序将作为独立的 jar 运行。(没有网络服务器)

编辑: 好的,复制密钥库似乎不是问题,因为我可以在使用原始密钥库文件的本地副本时运行原始应用程序。看来这是一个配置问题。

Ste*_*n C 5

是否可以复制现有的密钥库?

是的。从文件系统的角度来看,它只是一个文件。

我认为问题是以下之一:

  • 其他项目中的相关属性未正确设置。
  • 另一个 JVM 找不到密钥库文件(例如,由于 chrooting 或其他原因)
  • 另一个 JVM 没有访问/读取密钥库文件所需的权限。
  • 读取访问被(例如)SELinux 阻止。