我正在开发一个具有基本客户端 - 服务器架构的系统,该架构还通过从服务器调用的Web服务与第三方集成。第三方目前通过X509证书进行授权,并希望继续这样做。如果第三方的证书安装在客户端上并且每次客户端与服务器通信时都会传递证书,那么证书是否可以转发到对第三方Web服务的任何调用?这甚至是可能的,还是与证书的设计相悖?
答案 0 :(得分:0)
首先,您需要了解证书和私钥之间的区别。通常,人们说他们用证书签名,而他们实际使用与该证书相对应的私钥签名(包含公钥和身份相关信息)并将证书提供给远程方。你(应该)永远不会让你的私钥出来。
如果您正在使用TLS客户端证书身份验证,则验证文档(或TLS CertificateVerify
握手消息)的签名可确保签名者具有与您所在证书中的公钥对应的私钥。在握手中重新给出。
验证和验证证书是关于检查您是否信任绑定到证书中该公钥的信息。此断言通常由您信任的第三方(证书颁发机构(CA))进行。
在传统的PKI(RFC 3280或RFC 5280)中,证书还具有扩展(以及身份信息),以描述CA颁发该证书的目的。 CA证书本身具有扩展名,表示它们是CA证书(实际上有多个条件要实现)。 在此模型中,不允许发送终端实体证书(不是CA证书,但由CA颁发)颁发其他证书,这些证书可用于委派其身份(和/或授权以执行某些操作) )。
Proxy Certificate Profile (RFC 3820)旨在解决此问题。在此上下文中,即使最终实体证书也可以是代理证书的颁发者,其必须包含特定属性。特别是,由于为此生成了新的公钥/私钥对,并且由于私钥通常不受最终用户的保护,而是由委托证书使用的服务保护,因此代理证书必须是短期的(而不是数小时)几年)。 这项工作来自Grid Security Infrastructure(GSI)。
默认情况下通常不支持此功能,因此您可能需要使用此方法更改各方的配置。支持还取决于您使用的语言。