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

猜你喜欢

转载自blog.csdn.net/wangzuochuan/article/details/52771032
今日推荐