保护webservice:有效的SSL密钥错误“ValidatorException:PKIX路径构建失败”

时间:2009-10-21 08:26:48

标签: java web-services security java-ee ssl-certificate

我想使用带有mechansim的Netbeans保护网络服务:“通过SSL进行消息身份验证”,我会做Netbeans文档和 Sun WSIT教程告诉你做。我还在客户端jre中导入生成的SSL密钥,但是当我运行客户端代码时,我仍然遇到此错误:

  

无法在https://localhost:8443/SecureWebService?wsdl访问WSDL。它失败了:sun.security.validator.ValidatorExcepti on:PKIX pathbuilding failed:un.security.provider.certpath。 SunCertPathBuilderException:无法找到请求目标的验证路径。

有人可以帮助我吗?

2 个答案:

答案 0 :(得分:1)

看起来客户端无法验证整个证书路径。客户端证书是否自签名?可能是您的证书颁发机构未知。如果这是问题,您可以使用以下脚本导入CA的公钥:

#!/bin/bash

# path to your cacerts file
CACERTS="/etc/java-6-sun/security/cacerts"
# sun's default password - change if necessary
CACERTSPASS="changeit" 

# change this
ALIAS="myAlias"
CERTPATH="/path/to/ca.der" 

if [ `keytool -list -keystore $CACERTS -storepass $CACERTSPASS | grep -c $ALIAS` -gt 0 ]; then 
    echo already installed
else 
    keytool -import -keystore $CACERTS -storepass $CACERTSPASS -alias $ALIAS -file $CERTPATH
fi

您也可以在Windows计算机上使用keytool命令。

答案 1 :(得分:0)

您可以尝试将sfussenegger脚本中的keytool命令替换为:

keytool -import -keystore $CACERTS -storepass $CACERTSPASS -alias $ALIAS -file $CERTPATH -trustcacerts

然后,脚本会将您自签名的证书作为可信CA证书导入根密钥库,这将提供有效的证书路径来验证服务器的身份。