【问题标题】:How to verify a binary signed with a self-signed certificate?如何验证使用自签名证书签名的二进制文件?
【发布时间】:2010-10-22 05:11:49
【问题描述】:

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

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

【问题讨论】:

    标签: cryptography code-signing signing authenticode


    【解决方案1】:

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

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

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

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        猜你喜欢
        • 2011-09-22
        • 2014-03-16
        • 2015-11-01
        • 2012-09-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-01-09
        • 1970-01-01
        相关资源
        最近更新 更多