Windows 8 Signtool错误:找不到符合Windows应用商店应用程序所有给定条件的证书?

Windows 8 Signtool错误:找不到符合Windows应用商店应用程序所有给定条件的证书?,windows-8,windows-store-apps,signtool,appx,Windows 8,Windows Store Apps,Signtool,Appx,我正在尝试使用我拥有的pfx文件对Windows 8 appx软件包进行签名。我使用的命令如下: signtool.exe sign /fd sha256 /f "key.pfx" "app.appx" 从中,我得到: SignTool错误:未找到满足所有给定条件的证书 我没有达到什么“标准”?这仅用于测试,因此这些是自签名证书。我尝试导入密钥,然后对其进行签名,但结果总是相同的错误。我该如何解决这个问题 尝试使用/debug.1,2,如下所示: signtool sign/debug/f m

我正在尝试使用我拥有的pfx文件对Windows 8 appx软件包进行签名。我使用的命令如下:

signtool.exe sign /fd sha256 /f "key.pfx" "app.appx"
从中,我得到:

SignTool错误:未找到满足所有给定条件的证书

我没有达到什么“标准”?这仅用于测试,因此这些是自签名证书。我尝试导入密钥,然后对其进行签名,但结果总是相同的错误。我该如何解决这个问题

尝试使用/debug.1,2,如下所示:

signtool sign/debug/f mypfxfile.pfx/p(mydllexesculable.exe)
它将帮助你了解到底发生了什么。您应该得到如下输出:

The following certificates were considered:
    Issued to: <issuer>
    Issued by: <certificate authority> Class 2 Primary Intermediate Server CA
    Expires:   Sun Mar 01 14:18:23 2015
    SHA1 hash: DD0000000000000000000000000000000000D93E

    Issued to: <certificate authority> Certification Authority
    Issued by: <certificate authority> Certification Authority
    Expires:   Wed Sep 17 12:46:36 2036
    SHA1 hash: 3E0000000000000000000000000000000000000F

After EKU filter, 2 certs were left.
After expiry filter, 2 certs were left.
After Private Key filter, 0 certs were left.
SignTool Error: No certificates were found that met all the given criteria.
考虑了以下证书:
发给:
签发人:2级主中间服务器CA
过期日期:2015年3月1日星期日14:18:23
SHA1散列:DD0000000000000000000000000000D93E
发给:证书颁发机构
发证机构:认证机构
过期时间:周三9月17日12:46:36 2036
SHA1散列:3E0000000000000000000000000000000f
经过EKU筛选后,剩下2个证书。
过期筛选后,剩下2个证书。
私钥筛选后,剩余0个证书。
SignTool错误:未找到满足所有给定条件的证书。
您可以查看是什么过滤器导致您的证书不工作,或者是否考虑了没有证书

我改变了散列和其他信息,但你应该明白。希望这有帮助


1请注意:
signtool
特别说明了
/debug
选项的放置位置。它需要在
符号之后执行
语句

2另请注意:
/debug
选项仅适用于某些版本的
signtool
。WDK版本有此选项,而Windows SDK版本没有此选项

如果其他人遇到这种情况:我的问题是,在使用signtool.exe应用程序之前,我需要以管理员身份运行命令提示符。然后一切都很顺利。

在我的情况下,我尝试关联的证书类型错误。
我使用的是“服务器身份验证”而不是“代码签名”。

您应该能够在“预期用途”部分的证书管理单元中看到这一点。
之后,它就可以正常工作。

转到
项目属性
,在初始化编译之前取消选中
公司
的所有字段。

发现证书的私钥没有权限

要修复-打开Certfact management,找到您的证书,右键单击->管理私钥,然后在顶部的安全中确保添加了您的用户并授予了权限,这为我解决了这个问题。

当通过Visual Studio获取此错误时,这是因为有一个签名证书设置来匹配最初开发它的计算机

您可以通过转到“项目属性”>“签名”选项卡并检查证书详细信息来检查这一点

您可以取消选中“为ClickOnce清单签名”以禁用签名


如果不想关闭此选项,则必须安装证书。

标准包括帐户名(与之关联的私钥)、域、公司、过期日期、预期用途等

出现此错误的可能原因有很多,其中一些已经列出。这里还有另一个提示:导入证书时,请确保使用从证书颁发机构(CA)收到的原始文件,否则某些属性可能会丢失


示例:最近我尝试在同一台计算机上导入从不同帐户导出的证书。证书对我的帐户可见,但与我的帐户没有关联,因此,
signtool
拒绝识别它,而没有明确提供文件名和密码。当作为构建过程的一部分完成并在批处理文件或源文件中显式写入时,可能不够安全。(导入CA颁发的原始证书解决了此问题。)

请始终首先检查您的证书到期日,因为大多数证书都有到期日。在我的情况下,证书已经过期,我正在尝试构建项目。

我也有这个问题,尝试了很多。使用SDK和VisualStudio签名,但无论在哪里我都得到“没有找到满足所有给定条件的证书”

解决方案: 请注意,如果“在私钥筛选器之后”:“0 left”显示选项signtool sign/debug…,则原因是您的电脑存储区中没有CA本身。要解决这个问题,首先安装CA(在我的例子中是一个.crt文件),然后再次运行该标志。现在应该可以用了


Signtool只能与同一台PC请求并拥有的CA一起使用。

我也有同样的问题,在阅读一些答案(张贴在此处)时,我看到我的证书过期了

只要从我的开始项目创建一个新的。然后,at证书管理器删除了过期的证书


现在一切都很好。

我的问题是我不了解signtool选项。我为/n选项提供了与我的证书不匹配的内容。当我删除它时,它停止了抱怨。

我有一个类似的问题,我的计算机名已更改,证书已过期。我可以通过创建新的测试证书来解决这个问题


在VisualStudio中,右键单击解决方案资源管理器中的项目。选择属性。选择“登录属性”窗口。单击“创建测试证书…”。输入测试证书的密码信息,然后单击“确定”

我通过使用
/sm
标志指定查找机器存储,而不是默认的(本地用户)存储,解决了这个问题。此外,它还可以通过使用
/d来帮助打开signtool的调试
The following certificates were considered:
    Issued to: <issuer>
    Issued by: <certificate authority> Class 2 Primary Intermediate Server CA
    Expires:   Sun Mar 01 14:18:23 2015
    SHA1 hash: DD0000000000000000000000000000000000D93E

    Issued to: <certificate authority> Certification Authority
    Issued by: <certificate authority> Certification Authority
    Expires:   Wed Sep 17 12:46:36 2036
    SHA1 hash: 3E0000000000000000000000000000000000000F

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