我想使用带有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:无法找到请求目标的验证路径。
有人可以帮助我吗?
答案 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证书导入根密钥库,这将提供有效的证书路径来验证服务器的身份。