2013-03-14 69 views
0

我有一个在GlassFish v3上本地运行的Web应用程序。该应用连接到另一台服务器(不是本地)上的REST Web服务。连接通过HTTPS完成。虽然试图连接我得到:GlassFish连接到SLL Web服务

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呢?

回答

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>); 

希望帮助!

编辑:你也许会发现this问题也很有帮助。所选择的答案建议到:

1)密钥存储文件复制到C:\ glassfish3 \ GlassFish的\域\ DOMAIN1 \ CONFIG \

2)配置GlassFish使用SSL