Web services IBM Liberty SSL握手失败

Web services IBM Liberty SSL握手失败,web-services,ssl,websphere-liberty,Web Services,Ssl,Websphere Liberty,我正在使用自由16.0.0.4 我正在尝试调用xxxx SOAP服务,但出现以下错误 [错误]CWPKI0022E:SSL握手失败:从目标主机发送了SubjectDN CN=xxxx的签名者。签名者可能需要添加到本地信任存储serverHome/resources/security/key.jks,位于SSL配置别名defaultSSLConfig中。来自SSL握手异常的扩展错误消息为:PKIX路径生成失败:sun.security.provider.certpath.SunCertPathBu

我正在使用自由16.0.0.4

我正在尝试调用xxxx SOAP服务,但出现以下错误

[错误]CWPKI0022E:SSL握手失败:从目标主机发送了SubjectDN CN=xxxx的签名者。签名者可能需要添加到本地信任存储serverHome/resources/security/key.jks,位于SSL配置别名defaultSSLConfig中。来自SSL握手异常的扩展错误消息为:PKIX路径生成失败:sun.security.provider.certpath.SunCertPathBuilderException:找不到请求目标的有效证书路径

我使用next命令生成证书

openssl s_client -connect xxxxURL:443 | sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' > xxx.cert
然后使用next命令将其注入liberty jks默认文件

keytool -import -trustcacerts -alias xxxSigner -file xxx.cert -keystore *pathToHomeServer/resources/security/key.jks* -storepass Liberty -storetype jks
这也是与之相关的server.xml标记

<featureManager>
    <feature>webProfile-7.0</feature>
    <feature>jaxb-2.2</feature>
    <feature>concurrent-1.0</feature>
    <feature>javaMail-1.5</feature>
    <feature>localConnector-1.0</feature>
    <feature>jaxws-2.2</feature>
    <feature>apiDiscovery-1.0</feature>
    <feature>ssl-1.0</feature>
</featureManager>

<keyStore id="defaultKeyStore" location="${server.config.dir}/resources/security/key.jks" password="{xor}EzY9Oi0rJg==" type="jks" />
<keyStore id="defaultTrustStore" location="${server.config.dir}/resources/security/key.jks" password="{xor}EzY9Oi0rJg==" type="jks" />

<sslDefault sslRef="defaultSSLConfig" />

<ssl id="defaultSSLConfig" keyStoreRef="defaultKeyStore" trustStoreRef="defaultTrustStore" sslProtocol="TLSv1.2"/>

<httpEndpoint id="defaultHttpEndpoint" httpPort="9080" httpsPort="9443">
    <sslOptions sslRef="defaultSSLConfig"></sslOptions>
</httpEndpoint>

webProfile-7.0
jaxb-2.2
并发-1.0
javaMail-1.5
localConnector-1.0
jaxws-2.2
API-1.0
ssl-1.0

那么,我这边的问题是什么呢?

如果在openssl命令中附加-showcerts时显式地添加签名者本身(显示在证书堆栈的底部),它会起作用吗?

不确定为什么您的方法不起作用,但另一种方法是使用浏览器检索证书,然后使用keytool添加证书,如本文所述(请参阅文章底部的8/5/2015评论):developer.ibm.com/wasdev/docs/single sign google liberty

不幸的是,它也不起作用,我按照你的建议使用了-showcerts,所以我的命令是“openssl s|u客户端-showcerts-connect xxx:443 | sed-ne'/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p'>xxx.cert”,它生成了证书文件,然后将其注入到默认服务器jsk文件中,但与之前一样,Liberty引发了相同的异常:(重点是停止使用该命令,仅复制/粘贴根CA和根CA?此外,不确定您的方法为何不起作用,但另一种方法是使用浏览器检索证书,然后使用keytool添加证书,如本文所述(请参阅文章底部的8/5/2015注释):@BruceT.谢谢,当从WSDL路径下载证书并使用“keytool-import…”注入它时,它实际上是工作的,但我不知道使用“openssl s_client…”命令执行它时有什么问题,无论如何,你可以添加你的答案,我会接受它,再次感谢:)