问题描述
使用Java程序访问HTTPS地址时,如果网站对应的证书所属签发机构不在系统受信任的根证书签发机构里(自签证书),则会报错误:SunCertPathBuilderException: unable to find valid certification path to requested target
。
解决方案
需要将该证书的签发者(包括根证书签发机构和分支证书签发机构),导入到jre的的cacerts
文件中,默认密码是changeit
。
keytool -import -alias rootCA -file "<rootCA.cer>" -keystore "%JAVA_HOME%/jre/lib/security/cacerts" -trustcacerts
keytool -import -alias ica -file "<ica.cer>" -keystore "%JAVA_HOME%/jre/lib/security/cacerts" -trustcacerts