【发布时间】:2018-01-11 06:46:33
【问题描述】:
我在 tomcat 8 上部署了一个 Web 应用程序,它使用来自两个不同系统的 Web 服务,每个系统都需要相互身份验证。现在我需要将我的应用程序与两个不同的客户端证书集成,或者我们可以说两个具有不同密码的不同密钥库。现在我在为这两种服务使用正确的证书时遇到了困难。
我正在使用自己的代码调用其中一项服务,但第二项服务是从第三方库调用的,我无法控制其调用方代码。 如果我使用任何一个密钥库,则相应的服务调用会成功,但另一个会失败。
我尝试了以下方法,但都失败了 -
- 我创建了一个新的密钥库,并在密钥库中添加了两个证书,并在环境变量中设置了“javax.net.ssl.keyStore”、“javax.net.ssl.trustStore”和相应的密码。这使得只有一个服务调用成功。
- 我删除了上述环境变量,并使用以编程方式配置的 SSL 上下文(类似于 Access Https Rest Service using Spring RestTemplate)调用了一项服务。这会导致一项服务成功而另一项服务失败(显然)。
- 我配置了“javax.net.ssl.keyStore”、“javax.net.ssl.trustStore”和相应的密码,其中包含一个仅用于一项服务的密钥,并像上一步一样以编程方式设置另一项服务的 SSLContext。这会导致在第 2 步中成功的服务失败(也许其他密钥库会覆盖这个?)以及其他服务的成功。
- 我尝试更改密钥的密码以使它们彼此相同并且与密钥库相同。这也会导致一项服务失败。
任何建议我接下来可以尝试什么或上述方法的实际问题是什么?
【问题讨论】:
标签: java ssl keystore tomcat8 mutual-authentication