【发布时间】:2019-11-22 11:08:15
【问题描述】:
所以,我有这个签名的 XML 文档。在这种情况下,一个 SAML2 响应。我想验证这个 XML 文档是否未被以某种方式篡改过。如果我理解正确,这样做的方法是检查已签名文档的签名与签名时所用的公钥。
我知道如何检查签名,所以这不是问题。我的问题是关于检查签名时实际验证的内容。
我有一个示例 XML,其中包含用于签署 XML 的证书。如果我理解正确,我可以从 XML 中提取证书的公钥,并使用提取的密钥来验证 XML 没有被篡改。当我尝试时,这似乎工作正常。
我的问题是,这不只是验证 XML 是否针对其自己包含的证书进行验证?还是我错过了什么?如果有人用他们自己的签名响应替换了整个响应 XML 会怎样。我假设虚假响应可以根据自己包含的证书进行验证,就像合法响应会根据自己包含的证书进行验证一样?
您是否必须根据已知证书(例如安装在本地证书存储中)验证已签名的 XML,以确保响应未被篡改并且来自预期的来源?
【问题讨论】:
-
证书中有私钥。发送的 xml 仅包含密钥的公共部分,因此有人无法篡改发送者消息。证书不应与实际消息一起发送,因此有人无法同时更改证书和消息。
-
@jdweng 我不确定为什么证书包含在签名的 Xml 中,但我确信有理由这样做。这不是我能从我身边控制的任何事情。
-
只有当 xml 被信任时,证书才应该包含在签名的 xml 中。
标签: xml certificate saml-2.0