【问题标题】:IBM Liberty SSL HANDSHAKE FAILUREIBM Liberty SSL 握手失败
【发布时间】:2017-09-01 10:01:49
【问题描述】:

我正在使用 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.SunCertPathBuilderException:无法找到到请求目标的有效证书路径

我使用下一条命令生成证书

openssl s_client -connect xxxxURL:443 | sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' > xxx.cert

然后使用下一条命令将其注入到 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>

那么我这边有什么问题

【问题讨论】:

  • 不确定为什么您的方法不起作用,但另一种方法是使用浏览器检索证书,然后使用 keytool 添加它,如此处所述(参见 8/5/ 2015文章底部评论):developer.ibm.com/wasdev/docs/single-sign-google-liberty
  • @BruceT。谢谢,实际上当从 WSDL 路径下载证书并使用“keytool -import ...”注入它时它正在工作,但我不知道在使用“openssl s_client ...”命令执行它时出了什么问题,无论如何你可以添加您的答案,我会接受,再次感谢:)

标签: web-services ssl websphere-liberty


【解决方案1】:

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

【讨论】:

    【解决方案2】:

    如果您显式添加签名者本身是否有效,当您将 -showcerts 附加到您的 openssl 命令时显示在证书堆栈的底部?

    【讨论】:

    • 不幸的是它也不起作用,我按照你的建议使用了 -showcerts 所以我的命令是“openssl s_client -showcerts -connect xxx:443 | sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' > xxx.cert",它生成了证书文件,然后将其注入到默认的服务器 jsk 文件中,但与以前一样从 Liberty 抛出了相同的异常:(
    • 更重要的是停止使用命令并单独复制/粘贴根 CA 和根 CA?还有,github.com/covener/plugin-tools/blob/master/retrievesigner.jar
    猜你喜欢
    • 2018-07-28
    • 2012-10-11
    • 2015-03-16
    • 2021-12-28
    • 2018-10-17
    • 2016-04-29
    • 2014-03-05
    • 1970-01-01
    相关资源
    最近更新 更多