Java双向认证客户端报错解决

问题

java报如下错误:
javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path validation failed: java.security.cert.CertPathValidatorException: Algorithm constraints check failed: MD5withRSA

初步想法

看提示猜测有如下两种可能:

  • 服务器认证客户端不通过
  • 客户端认证服务器不通过

验证所想

直接浏览器打开相关地址,直接可以访问,排除情况1

那么就是客户端不认可服务器证书,即需要把服务器证书加入到客户端认证链里
查看认证链(TrustStore)
keytool -list -keystore <KeystoreFile>

只有另外一个可信的服务器证书

解决问题

导出服务器证书
这里写图片描述
加入到认证链
keytool -import -noprompt -trustcacerts -alias <AliasName> -file <certificate> -keystore <KeystoreFile> -storepass <Password>

再次测试即通过

总结

查看
keytool -list -keystore <KeystoreFile>
加入
keytool -import -noprompt -trustcacerts -alias <AliasName> -file <certificate> -keystore <KeystoreFile> -storepass <Password>

附加

加入
keytool –import –noprompt –trustcacerts –alias ALIASNAME -file FILENAME_OF_THE_INSTALLED_CERTIFICATE -keystore PATH_TO_CACERTS_FILE -storepass PASSWORD
在使用java 7的情况下
keytool –importcert –trustcacerts –alias ALIASNAME -file PATH_TO_FILENAME_OF_THE_INSTALLED_CERTIFICATE -keystore PATH_TO_CACERTS_FILE -storepass changeit

参考

StackOverFlow

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值