在为Windows UWP签名appx文件时出现0x80080209错误

3

我已经构建了一个Windows 10 UWP Cordova应用程序,现在正在尝试对其进行签名。我已经有一个证书用于其他地方(用于签署.net程序集),因此我想在这个应用程序签名中使用同一个证书。

当我使用signtool.exe时,我会收到以下错误消息...

SignTool Error: An unexpected internal error has occurred.
Error information: "Error: SignerSign() failed." (-2146958839/0x80080209)

按照建议,在事件日志中查看此处,我没有看到任何错误,只有两条信息消息。

读取器已成功创建,无需清单验证。

我已确保AppxManifest.xml文件中的Publisher字段与证书中的主题匹配。

此处查看,我发现这被描述为

0x80080209-APPX_E_INVALID_SIP_CLIENT_DATA
Description : The SIP_SUBJECTINFOstructure used to sign the package didn’t 
contain the required data

有人知道这是什么意思吗?

[更新1]

在上述失败后,我尝试根据此网页的说明创建新证书。

我使用了以下内容。

# create
New-SelfSignedCertificate -Type Custom -Subject "CN=My Company Pty Ltd, O=My Company Pty Ltd, C=AU" -KeyUsage DigitalSignature -FriendlyName mycert_uwp -CertStoreLocation "Cert:\LocalMachine\My"

 # get info
 Set-Location Cert:\LocalMachine\My
 Get-ChildItem | Format-Table Subject, FriendlyName, Thumbprint

 # export
 $pwd = ConvertTo-SecureString -String password123 -Force -AsPlainText 
 Export-PfxCertificate -cert "Cert:\LocalMachine\My\17BBBBBB2DC49F550671AF3E72120C88E2333333" -FilePath h:\0\mycert_uwp.pfx -Password $pwd

一切似乎都正常工作。

在我的AppxManifest.xml文件中,我有...

<Identity Name="com.mycompany.myapp" Publisher="CN=My Company Pty Ltd, O=MyCompany Pty Ltd, C=AU" Version="1.0.1.1" ProcessorArchitecture="x86" />

当我使用上述方法时,仍然会出现相同的错误。

[更新2]

我正在使用的 signtool 命令为:

signtool sign /fd SHA256 /a /f myapp_uwp.pfx /p may password c:\dev\myapp\platforms\windows\build\windows\release\x86\win10\Upload\CordovaApp.Windows10_1.0.1.1_x86\CordovaApp.Windows10_1.0.1.1_x86.appx

此处所述。

我还尝试使用SHA384SHA512。还有建议尝试使用/debug,但是我收到一个错误提示/debug是无效选项。

[更新3] 看起来是证书的问题。我试图通过Visual Studio(打包,选择证书)使用它,但在输入密码后出现以下错误:

enter image description here

.. 但我已经遵循了这里的说明(并进行了三重检查)。

这些说明有误吗?


你能否在你的问题中包含你的清单和证书信息?并且你是否按照这些步骤创建了你的证书 - 特别是两个 EKU? - Peter Torr - MSFT
我已经看到了上面的链接。它有一个标签为“Important MakeCert.exe is deprecated. For current guidance on creating a certificate, see Create a certificate for package signing.”的链接,所以我按照那里的说明进行操作。我已经将额外的信息添加到问题中。 - peterc
请尝试按照此文章中的说明进行操作。忽略所有资源部分,但其中包含创建证书的明确说明。 - Peter Torr - MSFT
请参阅此批处理文件 - Peter Torr - MSFT
很好,这是进展。文档还告诉您如何信任证书。 - Peter Torr - MSFT
显示剩余3条评论
2个回答

0
我遇到了类似的问题: 错误信息:"Error: SignerSign() failed." (-2146958839/0x80080209)
但是没有日志条目,而且清单是正确的。
我们的解决方法是使用msvc2017编译,而不是msvc2015。

0

以防其他人遇到相似的问题(签名时出现0x80080209错误),较新版本的签名工具(来自Windows 10 SDK)对我有用。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接