我正在使用Wildfly 10.0.0.Final,需要一个后台进程连接一个使用Axis的web服务。在远程服务器上,存在一个自签名证书,我使用openssl从远程服务器获取了证书,并使用keytool创建了信任库并将证书导入其中。
我按照以下方式设置了我的Wildfly 10.0.0.Final的standalone.xml文件:
<security-realm name="SSLRealm">
<server-identities>
<ssl>
<keystore path="keystore.jks" relative-to="jboss.server.config.dir"
keystore-password="mykeystorepassword" alias="myalias"
key-password="mykeypass" />
</ssl>
</server-identities>
<authentication>
<truststore path="truststore.jks" relative-to="jboss.server.config.dir"
keystore-password="mytruststorepassword" />
</authentication>
</security-realm>
<server name="default-server">
<http-listener name="default" socket-binding="http" redirect-socket="https" />
<https-listener name="default-ssl" security-realm="SSLRealm" socket-binding="https" />
<host name="default-host" alias="localhost">
<location name="/" handler="welcome-content" />
</host>
</server>
但是,当后台进程尝试连接远程服务时,我会收到以下异常:
Caused by: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
at sun.security.provider.certpath.SunCertPathBuilder.build(Unknown Source)
at sun.security.provider.certpath.SunCertPathBuilder.engineBuild(Unknown Source)
at java.security.cert.CertPathBuilder.build(Unknown Source)
有什么办法可以解决这个问题吗?看起来好像没有使用信任库或者类似的东西...
myalias
是jks
文件中正确的别名吗?truststore.jks
是否在Wildfly
文件夹中(即不是子文件夹)?JDK
中的cacerts
文件中?