出站连接的 SSL 配置在 websphere-liberty 17.0.0.2 中不起作用

2024-05-19

我正在尝试将 websphere-liberty 服务器配置为对所有出站连接(实际上是 REST 调用)使用默认密钥库和 trustore,对于入站连接使用自定义密钥和信任库。但当尝试调用外部 REST 服务时,它会失败并出现 SSLHandshakeException。在日志中我可以看到它使用我的自定义信任库而不是默认信任库。
下面是我的 server.xml

<?xml version="1.0" encoding="UTF-8"?>
<server description="Default server">
    <featureManager>
        <feature>appSecurity-2.0</feature>
        <feature>transportSecurity-1.0</feature>
        <feature>jaxrs-2.0</feature>
        <feature>json-1.0</feature>
        <feature>javaMail-1.5</feature>
        <!--<feature>ssl-1.0</feature>-->
    </featureManager>

    <sslDefault sslRef="saasSSLConfig" outboundSSLRef="outboundSSLConfig" />

    <ssl id="saasSSLConfig" keyStoreRef="saasKeyStore" trustStoreRef="saasTrustStore" clientAuthentication="true" sslProtocol="TLSv1" />
    <keyStore id="saasKeyStore" location="/opt/ibm/wlp/output/defaultServer/resources/security/sbs_endpoint_keystore.jks" password="pwd" />
    <keyStore id="saasTrustStore" location="/opt/ibm/wlp/output/defaultServer/resources/security/serverTruststore.jks" password="pwd" />

    <ssl id="outboundSSLConfig" keyStoreRef="defaultKeyStore" trustStoreRef="defaultTrustStore" />

    <basicRegistry id="basic" realm="BasicRealm">
        <!-- <user name="yourUserName" password="" />  -->
    </basicRegistry>

    <httpEndpoint id="defaultHttpEndpoint" host="*" httpPort="9080" httpsPort="9443" />
    <applicationManager autoExpand="true"/>
</server>

顺便说一句,如果将 saasSSLConfig 更改为使用 defaultTrustStore 而不是 saasTrustStore,则一切正常。

服务器版本:

WebSphere Application Server 17.0.0.2 (1.0.17.cl170220170523-1818) on IBM J9 VM, version pxa6480sr4fp7-20170627_02 (SR4 FP7) (en_US)

Error:

[ERROR] CWPKI0022E: SSL HANDSHAKE FAILURE:  A signer with SubjectDN CN=*.api.ibm.com, O=International Business Machines, L=Armonk, ST=New York, C=US was sent from the target host.  The signer might need to be added to local trust store /opt/ibm/wlp/output/defaultServer/resources/security/serverTruststore.jks, located in SSL configuration alias saasSSLConfig.  The extended error message from the SSL handshake exception is: PKIX path building failed: java.security.cert.CertPathBuilderException: PKIXCertPathBuilderImpl could not build a valid CertPath.;
SSLHandshakeException invoking https://dev.api.ibm.com/scx/test/sbs/customer/222222222: java.security.cert.CertificateException: PKIXCertPathBuilderImpl could not build a valid CertPath.

Liberty 不会自动加载 cacert。如果需要,您可以创建一个 keyStore 元素来指向它。因此,在上面的情况下,您可以创建这样的配置。

<ssl id="outboundSSLConfig" keyStoreRef="cacertKeyStore" />
<keyStore id="cacertKeyStore" location=<fill in path to your jdk cacerts file> password="changeit" />

我假设您不需要此配置的密钥,因此我简化为 outboundSSLConfig 上的 keyStoreRef。它将使用 keyStoreRef 指向的内容作为密钥和信任。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

出站连接的 SSL 配置在 websphere-liberty 17.0.0.2 中不起作用 的相关文章

随机推荐

  • Laravel 从 API 响应中删除标头值

    Laravel 应用程序版本 5 6 我希望从 API 响应中显示的 Cache Control 标头中删除 private 值 我有一个中间件添加 无缓存 和 无存储 值 response next request response gt
  • Objective-C中如何使继承的类能够看到父类的隐藏方法[重复]

    这个问题在这里已经有答案了 我有两个类 Class1 和 Class2 第二个类继承自第一个类 我需要重写 Class1 的 update 方法来实现我的目标 继承方法中 update方法的改变是在代码中间进行的 所以我不能使用 超级更新
  • 如何将自定义管理器与相关对象一起使用?

    我有一个定制经理 我想将它用于相关对象 我发现用于相关字段 https docs djangoproject com en dev topics db managers controlling automatic manager types
  • ReactiveX:仅对每组中的最后一项进行分组和缓冲

    如何对 Observable 进行分组 并从每个 GroupedObservable 中仅将最后发出的项保留在内存中 这样每个组的行为就像BehaviorSubject 一样 像这样的东西 user 1 msg Anyone here us
  • 如何在没有 JavaScript 的情况下预加载图像?

    在我的 HTML 页面之一上 当我将鼠标悬停在某些链接上时 会显示一些大图像 并且加载这些图像需要一些时间 我不想使用 JavaScript 来预加载图像 有什么好的解决办法吗 HTML5 有一种新方法可以做到这一点 即link prefe
  • Elasticsearch 跨多个索引搜索 - 忽略不存在的索引

    我有弹性集群 其中我的索引包含当前日期 例如 example idex 2016 07 26 gt exists example idex 2016 07 25 gt exists example idex 2016 07 24 gt do
  • iPhone 允许光传感器作为输入吗?

    我只是想知道 iPhone 的开发是否允许使用光传感器 作为按钮或动作元素 我在网上找到了这个链接 可以使用光传感器作为按钮吗 存档 Touch Arcade 如果有人能阐明这个问题 我将不胜感激 Apple 代表的官方答复位于苹果开发者论
  • VSTO 替代方案 [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 VSTO 有哪些替代方案 ManagedXll 能做什么而 VSTO 不能 你什么时候使用其中一个而不
  • Excel 工作表名称的有效字符

    在 Java 中 我们使用以下包以编程方式创建 Excel 文档 org apache poi hssf 如果您尝试设置工作表的名称 不是文件 而是内部 Excel 工作表 在以下情况下您将收到错误消息 名称超过 31 个字符 该名称包含以
  • 如何使用超类的构造函数创建子类的实例

    我想为作为超类的子类的类创建一个注册表 这些类存储在充当注册表的映射中 根据键从注册表中选择一个类 并通过反射创建该类的实例 我想根据超类的构造函数 带有 1 个参数 实例化一个类 仅当我也在子类中声明构造函数时它才有效 有没有办法使用超类
  • 使用 YouTube Data API v3 的视频元数据

    通过使用搜索示例 我可以获得视频详细信息 例如名称 ID 缩略图 URL 但是我如何使用 YouTube Data API 获取视频总时长 提前致谢 进行搜索调用后 您必须调用 Youtube Data API 视频资源 您最多可以在搜索中
  • Java注释处理器:检查TypeMirror是否实现特定接口

    我正在使用 Java 注释处理器 我的注释 foo用于标记可以在运行时读取到文件或从文件中读取的字段变量 但是 我想检查变量类型是否实现Serializable在编译时 这样如果该字段不可序列化 我可以在编译时给出警告 错误 我不需要实际检
  • 如何让我的星星旋转?我能够制作星星,但不知道如何让它旋转

    这是我必须绘制星星的代码 g2d setStroke new BasicStroke 5 0f g2d setPaint Color BLACK g2d drawLine 40 90 40 40 g2d drawLine 80 90 40
  • 仅在调试版本中防止 NuGet 恢复包

    我在解决方案中启用了 恢复包 选项 因此当我将代码上传到 CI 服务器时 它会更新正确构建所需的所有包 并且效果很好 现在的问题是 在我的本地计算机上 构建需要很长时间才能启动 因为正在 更新软件包 有没有办法仅在发布版本中启用恢复包 我尝
  • FreeBSD 可以在 Docker 中运行吗?

    我一直在寻找一个Docker的图像FreeBSD但找不到 FreeBSD可以在docker中运行吗 如果没有 为什么不呢 从未来编辑 不 你不能 以下项目都没有超越原型 从技术上讲是可以的 但是你需要一个 FreeBSD 主机来完成它 而
  • 使用 Compojure、Hiccup 和 Ring 上传文件

    要将文件上传到我用 Clojure 编写的服务器 我需要一个如下所示的客户端表单
  • 使用 PBKDF2 和 SHA256 生成 128 位 AES 密钥是否安全?

    我想使用 PBKDF2 和一些加密哈希函数来生成 128 位 AES 密钥 SHA1 也是 128 位 所以我想将其与 PBKDF2 一起使用 但它已损坏 所以我选择使用 SHA256 这是否安全 或者散列大小和生成的密钥大小之间的差异是否
  • 找不到包“dbus-1”

    python3 m pip install dbus python Collecting dbus python Using cached dbus python 1 2 16 tar gz 576 kB Building wheels f
  • 异步WCF调用来保存线程?

    In 另一个问题 https stackoverflow com q 19731600 279516 建议我发送异步网络请求 而不是在后台线程上发送同步请求 原因是为了不浪费一根线 我试图理解这是怎么回事 这是最初的做法 我可以理解这里怎么
  • 出站连接的 SSL 配置在 websphere-liberty 17.0.0.2 中不起作用

    我正在尝试将 websphere liberty 服务器配置为对所有出站连接 实际上是 REST 调用 使用默认密钥库和 trustore 对于入站连接使用自定义密钥和信任库 但当尝试调用外部 REST 服务时 它会失败并出现 SSLHan