【发布时间】:2017-02-23 07:13:49
【问题描述】:
我正在开发基于 AXIS 的 Web 服务,其中服务提供商实施了 1 路 TLS。为了使用此服务,我使用 javax.net.ssl.keyStore 或 javax.net.ssl.trustStore 在 weblogic 启动脚本中提供了 keystore 和 truststore 属性。
当我们运行测试时,我们得到以下异常:
原因:java.security.NoSuchAlgorithmException:构造实现时出错(算法:默认,提供者:IBMJSSE2,类:com.ibm.jsse2.ec) 在 java.security.Provider$Service.newInstance(Provider.java:1271) 在 sun.security.jca.GetInstance.getInstance(GetInstance.java:249) 在 sun.security.jca.GetInstance.getInstance(GetInstance.java:177) 在 javax.net.ssl.SSLContext.getInstance(SSLContext.java:26) 在 javax.net.ssl.SSLContext.getDefault(SSLContext.java:9) 在 javax.net.ssl.SSLSocketFactory.getDefault(SSLSocketFactory.java:23) 在 org.apache.axis.components.net.JSSESocketFactory.initFactory(JSSESocketFactory.java:87) 在 org.apache.axis.components.net.JSSESocketFactory.create(JSSESocketFactory.java:105) ... 22 更多
原因:java.lang.Exception:信任库文件不存在:/home/apps/weblogic/.keystore
在 com.ibm.jsse2.rc.a(rc.java:38)
在 com.ibm.jsse2.ec.f(ec.java:19)
在 com.ibm.jsse2.ec.
即使在设置了密钥库/信任库属性之后,我什至不确定它从哪里选择 /home/apps/weblogic/.keystore 位置。
当我检查 AXIS JAR 文件时,我看到在 org.apache.axis.components.net.SunJSSESocketFactory 类中,我们有以下信任库的默认属性:
静态布尔 defaultClientAuth = false; 私人布尔客户端身份验证=假; 静态字符串 defaultKeystoreFile = System.getProperty("user.home") + "/.keystore"; 静态字符串 defaultKeyPass = "changeit";
谁能解释为什么 AXIS API 使用此默认密钥库而不是命令行参数中提供的密钥库。
【问题讨论】:
标签: java ssl weblogic axis keystore