我正在尝试使用我拥有的pfx文件对Windows 8 appx包进行签名。我使用了以下命令:
signtool.exe sign /fd sha256 /f "key.pfx" "app.appx"
因此,我得到了以下信息:
SignTool错误:未找到符合所有给定标准的证书。
哪些“标准”我没有达到?这只是为了测试所以这些都是自签名证书。我已经尝试导入密钥然后进行签名,但总是出现相同的错误。我该如何解决这个问题?
我正在尝试使用我拥有的pfx文件对Windows 8 appx包进行签名。我使用了以下命令:
signtool.exe sign /fd sha256 /f "key.pfx" "app.appx"
因此,我得到了以下信息:
SignTool错误:未找到符合所有给定标准的证书。
哪些“标准”我没有达到?这只是为了测试所以这些都是自签名证书。我已经尝试导入密钥然后进行签名,但总是出现相同的错误。我该如何解决这个问题?
在 Visual Studio 中出现此错误是因为设置了签名证书,以匹配最初开发计算机。
您可以通过进入项目属性 > 签名选项卡并检查证书详细信息来验证此情况。
要禁用签名,您可以取消选中“对 ClickOnce 清单进行签名”。
如果您不想关闭此选项,则必须安装证书。
尝试使用/debug选项。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.
您可以查看哪个过滤器导致证书无法正常工作,或者是否没有考虑到任何证书。
我更改了哈希和其他信息,但您应该明白我的意思。
1 请注意:signtool
对/debug
选项的放置非常关键。它需要在sign
语句之后。
2 还要注意:/debug
选项只适用于某些版本的signtool
。WDK版本具有该选项,而Windows SDK版本则没有。
我在我的控制台应用程序开发中遇到了同样的问题,作为快速解决方法,
转到项目属性
,然后,
点击签名
选项卡,取消选中“对ClickOnce清单进行签名”。
图片描述:
另外,您还可以查看这个一分钟以下的视频解决方案。上面的图片来自该视频。
请始终首先检查证书到期日期,因为大多数证书都有有效期限。在我的情况下,证书已过期,我正在尝试构建项目。
certutil -dump mycertificate.pfx
。找到最后一条记录,因为前面几条是证书颁发机构而不是你的代码签名证书。 - JsAndDotNet项目属性 -> 签名 -> 取消选中“签署 ClickOnce 清单”
此外,正如此微软文章所建议的那样,
如果使用的是 Visual Studio 2008 并且针对 .NET 3.5 并使用自动更新,则可以更改证书并部署新版本。
在我的情况下,我使用了错误的证书类型来尝试关联证书。
我之前使用的是"服务器身份验证"而不是"代码签名"证书。
您应该能够在证书快照中的"预期目的"部分中看到这一点。
之后,它就能正常工作了。
遇到了同样的问题,结果是证书的私钥没有权限。
解决方法-打开证书管理器,找到您的证书,右键单击-> 管理私钥,然后在顶部的安全性中确保已添加并授予权限给您的用户,这对我有用。
如果还有其他人遇到类似问题:我的问题最终是我需要以管理员身份运行命令提示符才能使用 signtool.exe 应用程序。然后一切都可以正常工作。
只需在项目属性的签名选项卡中取消选择“签署ClickOnce清单”,即可解决该错误,并可以从那里创建新的清单。
我遇到了这个问题,但不确定是以下哪一步解决的。希望能帮到其他人...这是我所做的:
certmgr.msc
并将证书(在第1步中使用的任何存储区中找到)导出为包括私钥和扩展属性的PFX文件signtool sign /f "c:\mycert.pfx" /p mypassword /d "description" /t http://timestamp.verisign.com/scripts/timstamp.dll $(TargetPath)
.crt
文件,而不是安装证书并导出.pfx
文件。 - Joshua Pinter
Signtool
正在尝试在受信任的根证书存储中查找证书,而您在那里没有代码签名证书。 - crea7or