1

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

我在链中获得了三个证书:

Root CA -> Intermediate Signing CA -> Signing Key

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

我想这样做而不在用户的 Windows 证书存储中安装任何证书。这些是自签名证书,所以不是每个用户都希望我将它们安装在他们的根存储中。在我的根存储中安装它们没有问题。

我有原始的 .CER 文件——它们包含在签名块中,我可以将它们与验证码一起包含。我可以使用X509ChainPolicy.ExtraStore.

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

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

4

1 回答 1

0

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

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

一开始它的学习曲线有点陡峭,但它是一个非常强大的实用程序。

如果您没有签名证书,那么您将无法验证任何内容。这与在没有看到原始签名的情况下尝试验证人类签名相同。你没有什么可比的,那你怎么验证真伪呢?

更新

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

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

于 2012-04-10T15:20:22.027 回答