0

我有一个在本地 GlassFish v3 上运行的网络应用程序。该应用程序连接到另一个服务器(非本地)上的 REST Web 服务。连接是通过 HTTPS 完成的。在尝试连接时,我得到:

javax.net.ssl.SSLHandshakeException: 
sun.security.validator.ValidatorException: 
PKIX path building failed: 
sun.security.provider.certpath.SunCertPathBuilderException:
unable to find valid certification path to requested target

我将外部 ws 目录中的证书添加到本地 java 密钥库,但这并没有解决问题。

我是否必须指示 GlassF 使用本地密钥库或其他东西?或者只是将它添加到 java 密钥库中,它也应该适用于本地 GlassF?

4

1 回答 1

1

你有两个选择:

1.) 将$JAVA_HOME/jre/lib/security目录中的 cacerts 替换为您的密钥库。

2.) 在运行时更改密钥库,如下所示:

System.setProperty("javax.net.ssl.keyStore", <path to the new keystore>);
System.setProperty("javax.net.ssl.keyStorePassword",<password of the keystore>);
System.setProperty("javax.net.ssl.trustStore",<path to the new keystore>);

希望有帮助!

编辑:您可能会发现这个问题也很有帮助。选定的答案建议:

1.) 将您的密钥库文件复制到 C:\glassfish3\glassfish\domains\domain1\config\

2.) 将 GlassFish 配置为使用 SSL

于 2013-03-14T17:09:33.650 回答