我已经编写了一个在Web应用程序中调用的SOAP客户端。它使用Spring的WebServiceGatewaySupport,后者又使用标准的Java HTTP(S)UrlConnection。我连接的服务器要求双方都进行对等身份验证。证书是私钥。使用标准的Java密钥存储区引导程序,客户端可以很好地作为测试用例运行。

    System.setProperty("javax.net.ssl.trustStore", new File(cert).getAbsolutePath());
    System.setProperty("javax.net.ssl.trustStorePassword", certPassword);
    System.setProperty("javax.net.ssl.keyStore", new File(cert).getAbsolutePath());
    System.setProperty("javax.net.ssl.keyStorePassword", certPassword);


问题是当我尝试在Weblogic中使用此SOAP客户端时。我已将密钥添加到JRocket的证书,DemoTrust和DemoIdentity密钥库中。结果就好像没有应用DemoIdentity和DemoTrust。将密钥加载到cacerts中后,客户端信任服务器。服务器网关以403 Forbidden进行响应,这恰好是在设置信任存储区而不是密钥存储区(身份)时测试用例所发生的情况。

最佳答案

密钥库配置

使用自定义密钥库配置服务器时,如果您的密钥是由标准证书颁发机构(包括JDK的受信任CA列表)签名的,请转到“密钥库”选项卡并将其更改为“自定义身份和Java标准信任”。如果是自签名的,请使用“自定义身份”和“自定义信任”。

保存后,输入密钥库的完整路径,类型(通常为jks)和密钥库的密码。如果需要,对自定义信任进行相同的操作。

SSL配置

更改以上内容后,“ SSL”选项卡现在将允许您指定自定义身份。将私钥别名更改为将私钥导入密钥库时使用的值。如果您的私钥是使用密码生成的,请填写“私钥密码”字段(请注意:这与密钥库密码不同)。

单击高级,然后选中使用服务器证书选项,这将告诉Weblogic在执行出站SSL调用时使用上面配置的证书和密钥。



保存上述选项后,Weblogic将告诉您“不需要重新启动”。事实并非如此,您肯定需要重新启动服务器。如果拖尾启动日志,则应看到以下内容指示正在使用您的定制密钥库:

<BEA-090171> <Loading the identity certificate and private key stored under the alias [YOUR_ALIAS] from the jks keystore file [PATH_TO_YOUR_KEYSTORE].>


Weblogic可能还会记录以下内容:

weblogic.security.CustomIdentityKeyStoreFileName = /u01/app/oracle/middleware/weblogic/server/lib/DemoIdentity.jks


错误地表明它正在使用默认的身份密钥库,但这只是启动参数,因此只要记录了前一行,就可以安全地忽略它。

关于java - DemoIdentity DemoTrust keystore 无法与Weblogic上的标准SOAP客户端一起使用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/26854098/

10-10 16:50