1

我们想为我们的应用程序添加自动软件更新,但我们公司还没有准备好从受信任的根 CA 购买代码签名证书,因此我们将使用自签名证书来签署代码更新 (.exe和.dll)现在。

问题:如何使用 Microsoft 的 Cryptography API 验证使用自签名证书签名的二进制文件,而无需安装证书?要检查的 .cer 文件将与应用程序捆绑在一起。还是使用通用 Crypto 库更简单?

4

2 回答 2

4

你可以跳过整个 X509 的事情,毕竟如果你要使用自己的证书,你并不真的需要它......

对于您想要做的事情,首先您必须生成您的 RSA 私钥/公钥对。然后将公钥存储在您的应用程序中。

当您有更新时,您可以通过获取 MD5 或 SHA-1 或您想使用的任何哈希值在您的站点上对其进行签名;然后你用私钥加密那个散列。已安装的应用程序获取更新和签名(加密哈希);当应用程序获取二进制文件时,它会计算其哈希值,然后使用公钥解密另一个文件并进行比较。如果它们相同,那么它是一个有效的更新,否则你拒绝它并警告用户或其他东西。

对于自签名的 X509 证书,机制将完全一样,但公钥将有一堆额外的数据,比如颁发者的身份,这将是证书的相同身份。

于 2009-05-12T18:32:47.093 回答
0

我似乎记得几年前听说过一种启用自签名证书的方法,早在 Win2k 时代,但它非常笨拙,根本不适合公共部署,并且可能已被“修复”。如果您确实考虑使用其他加密库或开发自己的加密库,请注意:很难区分好加密和坏加密。

于 2009-05-11T20:20:11.577 回答