我目前正在使用Spring-ws处理spring项目,其中我正在使用HTTP客户端连接到配置有SSL的远程Web服务。第一步,我使用keytool实用程序导入了由提供给JAVA信任库的服务提供的公共证书(X509)。
我使用以下代码为http客户端配置了SSL上下文:
final SSLContext sslContext = SSLContextBuilder.create()
.loadKeyMaterial(keyStoreFile, keyPassword.toCharArray(), keyPassword.toCharArray())
.loadTrustMaterial(trustStoreFile, trustStorePassword.toCharArray()).build();
使用此配置,我得到以下错误:
sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
但是,如果我使用以下JVM参数来设置SSL参数,则它可以成功连接到Web服务。
-Djavax.net.ssl.keyStore
-Djavax.net.ssl.keyStorePassword
-Djavax.net.ssl.trustStore
-Djavax.net.ssl.trustStorePassword
还有一点,我需要将其导入JAVA lib安全文件夹下吗,它有什么含义吗?有时我们无权安装文件夹。
keytool import -keystore $JAVA_HOME/jre/lib/security/cacerts ...??
任何指向此的指针都将受到高度赞赏。