没有配置之前,调用cxf https服务端会出现以下错误:
PKIX:unable to find valid certification path to requested target
原因是没有找到有效的证书。
解决方法:
1.配置证书到客户端的jdk的cacerts下
cmd定位到jdk的bin目录,执行
keytool -import -file E:\apache-tomcat-7.0.64-4Trunk\bin\tomcat.cer -keystore "D:\Program Files\Java\jdk1.7.0_79\jre\lib\security\cacerts" -alias server
红色字体为之前配置https的证书路径,蓝色字体为客户端jdk的cacerts路径
要求输入密钥时,输入之前生成证书的密钥,默认为changeit。
提示“证书已添加到密钥库中”,说明成功。
若提示证书已存在,执行
keytool -delete -alias server -keystore "D:\Program Files\Java\jdk1.7.0_79\jre\lib\security\cacerts" -storepass changeit
删除证书
2.配置客户端的spring配置文件
添加以下代码:
<http:conduit name="*.http-conduit">
<http:tlsClientParameters disableCNCheck="true"
secureSocketProtocol="SSL">
<sec:trustManagers>
<sec:keyStore type="JKS" password="changeit"
file="D:\Program Files\Java\jdk1.7.0_79\jre\lib\security\cacerts" />
</sec:trustManagers>
<sec:cipherSuitesFilter>
<sec:include>.*_EXPORT_.*</sec:include>
<sec:include>.*_EXPORT1024_.*</sec:include>
<sec:include>.*_WITH_DES_.*</sec:include>
<sec:include>.*_WITH_NULL_.*</sec:include>
<sec:exclude>.*_DH_anon_.*</sec:exclude>
</sec:cipherSuitesFilter>
</http:tlsClientParameters>
</http:conduit>
重启服务,再次调用即可。