2010-07-27 141 views
3

我有一个Java CXF客户端,它使用相互身份验证连接到SSL安全的Web服务。 我有我的密钥库和我的信任库在客户端正确配置,它工作正常。具有多个证书的CXF SSL安全Web服务客户端

我在这里担心的是,我的密钥库只包含一个客户端证书,而在CXF配置中,无法对此SSL通信说“您可以使用此证书”。
由于我只有一个证书,因此选择CXF丢弃SSL握手的好方法并不困难。 但是,这个客户端将被部署在一个环境中,它将与多个可能的客户端拥有自己的证书一起使用,并且每个客户端都将由相同的证书颁发机构签名。当服务器要求提供由特定授权机构签署的客户端证书时,将无法区分一个证书与另一个证书。
如何告诉CXF(或Java)在此上下文中使用正确的证书?

我是否需要构建与客户端证书一样多的SSL上下文? (即拥有N个密钥库,每个密钥库只包含一个证书)。 或者有没有办法(在CXF conf或Java中)说“在这种情况下使用此证书”?

在此先感谢您的帮助。

回答

0

所有的证书都必须指向同一个客户端,否则CA将被解除其职责。所以他们应该都有相同的主题X500Principal。那么为什么你需要一个特定的证书?他们都识别同一个客户端,所以从认证的角度来看,它们都是等同的。

它开始听起来好像你想要使用特定的证书授权的目的,而不仅仅是通过身份验证建立身份。如果是这样,那就是错误的做法,滥用PKI。一旦您拥有身份验证身份,授权就是一个应用程序控制的步骤:获取对等证书的身份并查找您的授权数据库,以查看是否允许该身份访问此应用程序的这一部分。不要尝试使用cacerts文件作为授权数据库,这不是它的目的。

+1

感谢您的回应。 我同意你的看法,我必须在认证和授权之间做出区别。身份验证由SSL提供,授权将由SOAP中的WS-Security和SAML令牌提供。 – reef 2010-07-29 09:20:08

0

我不知道这是否是您的选择,但我之前使用WSIT(即一个密钥库,许多私钥项)完成了动态别名选择。有关更多详细信息,请参阅this article。 (让我知道如果这篇文章是不够的 - 我可以发布更多细节,如果你需要)

+0

感谢您的链接。我不知道这是否符合我的需求,我会仔细查看这个证书选择功能。 谢谢! – reef 2010-08-23 09:58:02

+0

链接已死:任何选择? – MeIr 2013-07-29 14:54:04

+0

这里是链接:https://xwss.java.net/articles/security_config.html – 2015-04-26 20:52:53

相关问题