在 Java 中选择 SSL 客户端证书
我们的系统与多个网络服务提供商进行通信。它们都是从单个 Java 客户机应用程序调用的。到目前为止,所有 Web 服务都已通过 SSL,但没有一个使用客户端证书。好吧,一个新的合作伙伴正在改变这一点。
使应用程序使用证书进行调用很容易;设置,并会这样做。但是,现在的问题是如何使它仅在调用该特定 Web 服务时使用证书。我想更一般地说,我们希望能够选择要使用的客户端证书(如果有的话)。javax.net.ssl.keyStore
javax.net.ssl.keyStorePassword
一种快速解决方案可能是设置系统属性,调用方法,然后取消设置它们。唯一的问题是我们正在处理一个多线程应用程序,所以现在我们需要处理同步或锁定或其他问题。
每个服务客户端都应该彼此完全独立,并且它们单独打包在单独的 JAR 中。因此,我想到的一个选择(尽管我们还没有正确分析它)是以某种方式隔离每个JAR,也许将每个JAR加载到具有不同参数的不同VM下。这只是一个我不知道如何实现的想法(或者如果可能的话,就此而言)。
这篇文章建议可以从密钥存储中选择单个证书,但是如何将其附加到请求似乎是一个完全不同的问题。
我们使用 Java 1.5、Axis2 和用 或 生成的客户端类。wsimport
wsdl2java