是否可以在不需要安装根证书的情况下验证 .NET 中的 XMLDSIG 签名

本文关键字:验证 情况下 NET 中的 签名 XMLDSIG 证书 不需要 安装 是否 | 更新日期: 2023-09-27 18:30:32

我想用XMLDSIG来验证.config文件是否没有被篡改。我还希望能够验证签名链,以便我可以信任签名。

我在链中有三个证书:

Root CA -> Intermediate Signing CA -> Signing Key

我检查文件是否使用中间 CA 颁发的密钥进行签名。

我想执行此操作,而无需在用户的 Windows 证书存储中安装任何证书。这些是自签名证书,因此并非每个用户都希望我将它们安装在他们的根存储中。我在根存储中安装它们没有问题。

我有原版.CER文件 - 它们包含在签名块中,我可以将它们包含在验证码中。我可以使用X509ChainPolicy.ExtraStore从中构建证书链。

如果证书未安装在根存储中,并且我验证了链,则X509Chain.Build返回false,并且链中有一个X509ChainStatusFlags.UntrustedRoot

是否可以仅在此操作期间添加受信任的证书?

是否可以在不需要安装根证书的情况下验证 .NET 中的 XMLDSIG 签名

假设您拥有信任链中所有签名证书的公钥的物理副本,那么这可以通过使用 OpenSSL 命令行工具来实现。

http://www.madboa.com/geek/openssl/#verify-standard

起初,这是一个陡峭的学习曲线,但是一个非常强大的实用程序。

如果没有签名证书,则无法验证任何内容。这就像在没有看到原件的情况下试图验证人类签名一样。你没有什么可比的,所以你怎么能验证真实性呢?

更新

这里有一些东西也许可以帮助你:

http://social.msdn.microsoft.com/Forums/eu/clr/thread/1966a6e8-b6f4-44d1-9102-ec3a26426789

相关文章: