【发布时间】: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