问题
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