4

我正在尝试将基于 cxf 的客户端配置为与我编写的 Web 服务进行通信(也是基于 cxf 的)。

Web 服务本身可以完美运行,通过soapUI.

但是,客户端可以正常构建,但在调用时会引发 SunCertPathBuilderException

怀疑这与提供包含服务器证书的信任库的有效路径有关,并具有到受信任证书的有效证书链,我首先尝试将该服务器的证书导出到 PFX,以便我可以将其导入到项目自己的.jks. 事实证明这是不可能的,因为它需要导出实用程序 () 出于某种原因certmgr.msc灰显的私钥。

所以我尝试从另一个方向解决这个问题:我知道soapUI通过SSL与web服务通信没有问题,而且我没有为它安装任何证书,所以它必须满足根证书(CA)已经存在于其cacerts文件中。

但是......http:conduit我的基于 CXF 的应用程序上下文部分.xml需要 JKS 类型的密钥库......所以看起来我处于第 22 条情况。

除非cacerts文件是 JKS 类型?

如果没有,有没有办法将证书从 a 转换或导出cacerts到 a .jks

解决这个问题的正确方法是什么?

4

1 回答 1

3

要查找 cacerts 文件的类型,只需使用 keytool:

~> keytool -list -keystore cacerts
Enter keystore password:

*****************  WARNING WARNING WARNING  *****************
* The integrity of the information stored in your keystore  *
* has NOT been verified!  In order to verify its integrity, *
* you must provide your keystore password.                  *
*****************  WARNING WARNING WARNING  *****************

Keystore type: JKS
Keystore provider: SUN

Your keystore contains 77 entries

所以答案是:

  1. 是的,cacertsJKS类型。
  2. 无需将 cacerts 转换为 JKS,因为它已经是那种格式。

  3. 解决此问题的一种方法是server.xml在 Tomca'tsconf目录(在客户端的服务器中)中找到该文件,然后找出<Connector元素中如何指定证书或信任库,然后...

如果需要将新内容添加到客户端的信任库中,请查找.crt用于在客户端服务器上安装证书的原始文件和密钥文件。

否则,只需让客户端的应用程序上下文 XML 指向soapUI 使用的相同信任库(因为它已被证明有效)。

于 2013-12-26T20:06:29.370 回答