Signtool错误:找不到符合Windowsapp store所有给定条件的证书?

所以,我试图用一个pfx文件签署一个Windows 8的appx包。 我正在使用如下命令:

signtool.exe sign /fd sha256 /f "key.pfx" "app.appx" 

从这里,我得到:

SignTool错误:未find符合所有给定条件的证书。

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

当通过Visual Studio得到这个错误时,这是​​因为有一个签名证书设置与最初开发的计算机相匹配。

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

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

签署属性

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

尝试使用/debugging。 1,2如:

 signtool sign /debug /f mypfxfile.pfx /p <password> (mydllexectuable).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. 

您可以看到filter导致您的证书不起作用,或者如果没有考虑证书。

我改变了哈希和其他信息,但你应该明白了。 希望这可以帮助。


1 请注意: signtool特别关于/debug选项的放置位置。 它需要去sign声明。
2 还要注意: /debug选项只适用于某些版本的signtool WDK版本有这个选项,而Windows SDK版本则没有。

请务必首先检查您的证书到期日,因为大多数证书都有失效date。 在我的情况下,证书已经过期,我正在尝试构build项目。

得到了同样的问题,原来证书的私钥没有权限。
要解决 – 打开certifactepipe理,find你的证书,点击右键 – >pipe理私钥,然后在安全的顶部确保你的用户被添加并给予权限,为我修复它。

以防其他人遇到这种情况:我的问题最终成为,我需要以pipe理员身份运行命令提示符之前使用signtool.exe应用程序。 那么一切都很好。

在我的情况下,我有我试图联想的错误types的证书。
我有“服务器身份validation”,而不是“代码签名”
您应该能够在“预期用途”部分的“证书”pipe理单元中看到这一点。
之后,它工作正常。

标准包括帐户名称(与其相关联的私钥),域名,公司,到期date,预期用途等。

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

例如:最近我尝试导入从同一台机器上的另一个帐户导出的证书。 证书对我的账户可见,但没有与我的账户相关联,结果是signtool拒绝识别,没有明确提供文件名和密码。 其中,如果作为构build过程的一部分完成,并且在batch file或源文件中明确写出,则可能不够安全。 (导入原始的CA颁发的证书解决了它。)

转到项目属性 – >点击签名—>取消签名ClickOnce清单。

或者用密码创buildtesting证书。

我有同样的问题,阅读一些答案(张贴在这里),我看到我的证书过期。

只需从我的启动项目创build一个新的。 然后在证书经理删除过期的证书。

现在一切都编译好了。

我也有这个问题,试了很多。 使用的SDK以及Visual Studio签名,但我到处都是“没有发现符合所有给定条件的证书”。

解决scheme:请注意,如果“在私钥过滤之后”:'0 left'出现选项signtool sign / debug …,原因是您的PC在商店中没有CA本身。 要解决这个问题,首先安装CA(在我的情况下是.crt文件),然后再次运行该标志。 它应该现在工作!

Signtool只能用于由同一台PC请求的CA。

我的问题最终是因为我不理解signtool选项。 我提供了一些与我的证书不匹配的/ n选项。 当我删除它停止抱怨。

我有一个类似的问题,我的电脑名称已经改变,证书已过期。 我能够通过创build一个新的testing证书来解决这个问题。

在Visual Studio中,右键单击解决scheme资源pipe理器中的项目。 select属性。 selectlogin属性窗口。 点击“创buildtesting证书….”。 inputtesting证书的密码信息,然后单击确定。

我解决了这个问题,通过使用/sm标志来指定在机器存储中而不是默认的,这是我的(本地用户)存储。 另外,通过使用/debug可以帮助打开signtool的/debug

使用/ debug,当你得到这个消息“在私钥过滤之后,剩下0个证书”,一个原因可能是pfx文件没有私钥。 当您将安装的证书导出到pfx文件时,请确保启用checkbox也包含私钥。

在编译之前,转到project properties并取消选中公司的所有字段

Interesting Posts