Certificate 验证没有中间证书的签名
是否可以验证层次结构中只有祖先或根证书的签名? 免责声明:我是证书处理的新手,所以请原谅这个幼稚的术语 考虑以下情况Certificate 验证没有中间证书的签名,certificate,saml,saml-2.0,digital-certificate,picketlink,Certificate,Saml,Saml 2.0,Digital Certificate,Picketlink,是否可以验证层次结构中只有祖先或根证书的签名? 免责声明:我是证书处理的新手,所以请原谅这个幼稚的术语 考虑以下情况 我们有两个方面(对于身份提供商,我们称他们为IdP,对于服务提供商,我们称他们为SP)和一些中央证书颁发机构CA,它们是IdP和SP绝对信任的 CA拥有IdP和SP都知道的自己的证书CertCA(以某种别名导入IdP和SP的密钥库) Out CA为IdP(CertDP)和SP(CertSP)颁发一份证书 IdP的密钥库中有CertIdP,并且知道它的密码,因此IdP可以使用Ce
- 我们有两个方面(对于身份提供商,我们称他们为IdP,对于服务提供商,我们称他们为SP)和一些中央证书颁发机构CA,它们是IdP和SP绝对信任的
- CA拥有IdP和SP都知道的自己的证书CertCA(以某种别名导入IdP和SP的密钥库)
- Out CA为IdP(CertDP)和SP(CertSP)颁发一份证书
- IdP的密钥库中有CertIdP,并且知道它的密码,因此IdP可以使用CertIdP对消息进行签名
- SP/CertSP也一样
- 现在让我们假设SP不知道CertDP,IdP不知道CertSP。他们只知道CertCA,用于签署CertDP和CertSP。(据我所知,我们有一个证书层次结构CertIdP-->CertCA,这取决于SAML响应是否包含签名证书
,或者仅包含其公钥..
)..
<saml2p:Response xmlns:saml2p="urn:oasis:names:tc:SAML:2.0:protocol" ...> ... <ds:Signature xmlns:ds="http://www.w3.org/2000/09/xmldsig#"> <ds:SignedInfo>...</ds:SignedInfo <ds:SignatureValue>...</ds:SignatureValue> <ds:KeyInfo> <ds:X509Data> <ds:X509Certificate>...</ds:X509Certificate> </ds:X509Data> </ds:KeyInfo> </ds:Signature> </saml2p:Response>
...
我将从一些小的介绍开始-数字签名的验证分两个阶段完成- 第一个签名验证-检查签名值是否实际对应于它所保护的内容,以及内容是否因此被篡改
- 信任验证-检查签名是否由验证人信任的人进行)
假设SP有一个使上述验证工作的公钥,并且它现在想要验证该公钥实际上属于IdP。为了做到这一点,它需要一个包含公钥和IdP名称的证书,并带有来自可信实体(本例中为CA)的签名。由于您没有此证书,因此无法验证签名是否由IdP执行。目前,我只获得SignedInfo和SignedValue(请参阅问题中的更新)。但您的意思是,如果我有X509Data和证书,那么我可以使用CA证书验证它,对吗?我刚刚了解到,
元素在xmldsig模式以及SAML 2.0核心标准中是可选的。是的,您只需要获得签名证书,无论是通过
还是通过其他方式,都取决于用例。使用集中式设置机制的方法也可以在不使用公钥信息的情况下工作,例如,通过提供当前验证证书的著名URL。@lexicore您将始终需要用于签名的证书来验证它。无法仅使用CA证书进行验证,因为您不知道签名是否使用了此CA或任何其他CA颁发的证书。如果可以,请将您的IdP设置为将签名IdP证书放入
元素的SAML中。谢谢!因为这是第一个正确的答案,所以授予赏金。<saml2p:Response xmlns:saml2p="urn:oasis:names:tc:SAML:2.0:protocol" ...> ... <ds:Signature xmlns:ds="http://www.w3.org/2000/09/xmldsig#"> <ds:SignedInfo>...</ds:SignedInfo <ds:SignatureValue>...</ds:SignatureValue> <ds:KeyInfo> <ds:X509Data> <ds:X509Certificate>...</ds:X509Certificate> </ds:X509Data> </ds:KeyInfo> </ds:Signature> </saml2p:Response>
<saml2p:Response xmlns:saml2p="urn:oasis:names:tc:SAML:2.0:protocol" ...> ... <ds:Signature xmlns:ds="http://www.w3.org/2000/09/xmldsig#"> <ds:SignedInfo>...</ds:SignedInfo <ds:SignatureValue>...</ds:SignatureValue> <ds:KeyInfo> <ds:KeyValue> <ds:RSAKeyValue> <ds:Modulus>...</ds:Modulus> <ds:Exponent>...</ds:Exponent> </ds:RSAKeyValue> </ds:KeyValue> </ds:KeyInfo> </ds:Signature> </saml2p:Response>