【问题标题】:signtool fails to find certificate on Windows 10, due to private key filter由于私钥过滤器,signtool 无法在 Windows 10 上找到证书
【发布时间】:2015-08-26 17:03:42
【问题描述】:

我是 UniversalADBDriver 的开发者,这是一个在用户计算机上创建自签名 Android USB 驱动程序的工具。

安装程序和安装包的源代码: https://github.com/koush/UniversalAdbDriver

该工具会生成一个密钥对并将证书添加到用户的密钥库中,然后对驱动程序文件进行签名。这一直很好,直到 Windows 10,它莫名其妙地停止工作。我手动运行命令行:

The following certificates were considered:
    Issued to: UniversalADB
    Issued by: UniversalADB
    Expires:   Fri Aug 25 17:00:00 2017
    SHA1 hash: C8701DF4CDC7DD75813400AD2B3B4C2EFDA4E662

After EKU filter, 1 certs were left.
After expiry filter, 1 certs were left.
After Private Key filter, 0 certs were left.
SignTool Error: No certificates were found that met all the given criteria.

在 Windows 10 上,证书被“私钥过滤器”过滤掉。不知道那是什么,上面没有任何文档。

更新

我发现通过 Windows 10 上的安装程序调用时,makecert.exe 或 X509Store.add 都无法将证书/密钥写入当前用户存储。但是,本地计算机存储中的证书放置正确。我不确定为什么会这样。所以基本上,私钥没有正确放置在存储中,因此签名失败。在命令行上手动运行相同的步骤是可行的。但是,我仍然需要弄清楚为什么私钥没有保留在商店中。

【问题讨论】:

  • @Richard,是的,测试签名过程正是我想要做的。
  • @koush,“通过安装程序调用”是什么意思?您是否在自定义操作中执行此操作?
  • @StenaviN makecert 在安装过程中通过安装程序 MSI 调用。安装过程执行以下操作:生成自签名证书,将其添加到证书存储(或至少尝试),并签署驱动程序。 github.com/koush/UniversalAdbDriver
  • @StenavIN 正确,这是自定义操作。

标签: windows driver-signing


【解决方案1】:

我使用 BouncyCastle 以编程方式生成证书。出于某种原因,此证书似乎不再适用于 Windows 10。我切换到打包 makecert.exe 以生成证书,这似乎解决了它。

【讨论】:

    猜你喜欢
    • 2013-08-25
    • 2015-04-25
    • 1970-01-01
    • 1970-01-01
    • 2010-11-15
    • 2013-03-29
    • 2011-05-11
    • 2011-11-09
    • 2014-06-11
    相关资源
    最近更新 更多