【问题标题】:Configured Weblogic Managed Server with Custom Identity and Truststore uses jre truststore使用自定义身份和信任库配置的 Weblogic 托管服务器使用 jre 信任库
【发布时间】:2016-10-26 09:25:45
【问题描述】:

我创建了一个带有托管服务器的 Weblogic 12c 域,我在该服务器上安装了 SOA Suite 12.2。为了能够在我的组合中通过 SSL 调用 REST 服务,我创建了一个具有有效证书链的信任库,以通过 SSL 连接到 REST 服务器。

我使用 /u01/data/keystores/identitykeystore.jks 中的自定义身份存储和 /u01/data/keystores/truststore.jks 中的信任库为 SOA 托管服务器创建了自定义身份和自定义信任。

当使用 REST 服务调用组合时,我得到一个远程故障

<bpelFault><faultType>0</faultType><remoteFault xmlns="http://schemas.oracle.com/bpel/extension"><part name="summary"><summary>oracle.fabric.common.FabricInvocationException: javax.ws.rs.ProcessingException: javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target</summary></part><part name="code"><code>null</code></part><part name="detail"><detail>unable to find valid certification path to requested target</detail></part></remoteFault></bpelFault></fault><faultType>
<message>0</message></faultType></messages>

在 de server.out 中调用服务报告找不到有效证书路径后不久发现 java 异常

sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target

收到的证书链符合预期,是根 CA、中间证书和服务器证书。 (也是从server.out中提取的)

原因似乎是 weblogic 没有使用配置的自定义信任库,而是使用默认的 Java 信任库。 (是的,nodemanager、admin 和 managed server 已经重启)这解释了为什么证书路径无效,但目前不知道如何解决这个问题。

<Jun 23, 2016 10:15:27 PM CEST> <Info> <Management> <BEA-141107> <Version: WebLogic Server 12.2.1.0.0 Tue Oct  6 10:05:47 PDT 2015 1721936>
trustStore is: /usr/java/jdk1.8.0_92/jre/lib/security/cacerts
trustStore type is : jks
trustStore provider is :
init truststore
adding as trusted cert:
  Subject: CN=Equifax Secure Global eBusiness CA-1, O=Equifax Secure Inc., C=US

欢迎任何建议、提示或解决方案!

-- 更新 1--

在“Fusion Middleware Securing Oracle WebLogic Server”文档中找到以下内容

WebLogic Server 如何找到信任

WebLogic Server 在加载其受信任的 CA 证书时使用以下算法:

  • 如果密钥库由 -Dweblogic.security.SSL.trustedCAkeystore 命令行参数指定,则从该密钥库加载受信任的 CA 证书。
  • 否则,如果在配置文件 (config.xml) 中指定了密钥库,则从指定的密钥库加载受信任的 CA 证书。如果服务器配置了 DemoTrust,则将从 WL_HOME\server\lib\DemoTrust.jks 和 JDK cacerts 密钥库加载受信任的 CA 证书。
  • 否则,如果在配置文件中指定了受信任的 CA 文件 (config.xml),从该文件加载受信任的 CA 证书(这是 仅用于与 6.x SSL 配置兼容)。
  • 否则从 WL_HOME\server\lib\cacerts 加载受信任的 CA 证书 密钥库。

未使用参数 -Dweblogic.security.SSL.trustedCAkeystore,因此应从自定义信任库加载受信任的 CA 证书。

-- 更新 2--

对于出站 Web 服务绑定,Oracle SOA 套件使用 JRF HttpClient,因此使用 Sun JDK 库进行 SSL。因此 -Djavax.net.ssl.trustStore=your_truststore_location 必须添加到 startweblogic.sh 中的 JAVA_OPTIONS

将 truststore 属性添加到 JAVA_PROPERIES 后,server.out 文件中会记录以下内容..

soa_server1.out:/u01/data/domains/soa12c/bin/setDomainEnv.sh: line 384: -Djava.net.ssl.trustStore=/u01/data/keystores/truststore.jks: 没有这样的文件或目录

文件存在,域用户对 jks 文件有文件访问权限。

【问题讨论】:

  • 所以让我问你这个问题,你是否尝试过将其保留为 DemoIdentity 和 DemoKeystore 并在 DemoIdentity 和客户端证书中添加服务器端证书(如果有)?您是通过 SSL 与 SOA 服务器通信,还是相反或两种方式?
  • 我看不到将演示身份用作信任库的好处。由于通过 SSL 调用 REST 服务,它是从 SOA 服务器到提供 REST 服务的远程服务器的单向信任。信任库包含有效的证书链。我修复了“没有这样的文件或目录”,这是由错误的引用引起的。将在几个小时内提供更新。干杯
  • 更新 JRE 密钥库是否有效?

标签: ssl weblogic truststore


【解决方案1】:

它不起作用,因为您输入的任何内容都被 Demo Trust 覆盖。如果您进入管理器服务器 bin 路径并打开 setDomainEnv 并搜索 Demo,您将看到 Demo trust JKS。删除它,然后重新启动您的 SOA 服务器。

【讨论】:

  • 嗨 Muhammed,如果这是真的,日志记录不会报告“trustStore is: /usr/java/jdk1.8.0_92/jre/lib/security/cacerts”。由于某种原因,trustStore 属性完全加载了。
【解决方案2】:

引用错误的位置.....

我最初已经从 setDomainEnv.sh 的 JAVA_PROPERTIES 中删除了 java 属性 -Djava.net.ssl.trustStore。并为他的信任库放置了一个新属性 -Djava.net.ssl.trustStore。但是将它放在包含 JAVA_PROPERTIES 内容的双引号之外。这就解释了为什么它默认回到 cacerts ..

【讨论】:

    猜你喜欢
    • 2017-02-23
    • 2018-08-16
    • 1970-01-01
    • 1970-01-01
    • 2014-08-24
    • 2019-07-14
    • 2015-03-09
    • 2010-09-24
    • 1970-01-01
    相关资源
    最近更新 更多