【问题标题】:Choosing a certificate for a Windows Store application via the package.appxmanifest通过 package.appxmanifest 为 Windows 应用商店应用程序选择证书
【发布时间】:2014-03-11 08:54:45
【问题描述】:
为了可以通过 Intune 在内部分发 WinRT 应用程序,我需要按照 http://msdn.microsoft.com/en-us/library/windows/apps/br230260(v=vs.110).aspx 附加证书
我进入package.appxmanifest屏幕,点击选择证书->配置证书->从文件中选择。我双击相关证书,然后输入密码。然后我收到错误消息“清单设计器无法导入证书。您选择的证书对签名无效,因为它已过期或有其他问题。有关更多信息,请参阅 http://go.microsoft.com/fwlink/ ?linkId = 241478",与我之前链接的页面相同。
或者,我将证书导入本地存储,在 package.appxmanifest 单击选择证书-> 配置证书-> 从证书存储中选择。然后我收到错误消息“没有可用的证书。没有证书符合申请条件。单击确定继续”。
我该如何解决这个问题?
【问题讨论】:
标签:
windows-runtime
windows-store-apps
code-signing
【解决方案1】:
事实证明,根据我之前发布的链接,增强密钥用法中指定的证书用法真的很挑剔。
在打包过程中,Visual Studio 验证指定的证书
有以下几种方式:
- 验证是否存在基本约束扩展及其值,该值必须是 Subject Type=End Entity 或未指定。
- 验证增强密钥使用属性的值,该属性必须包含代码签名,也可能包含生命周期签名。任何其他
禁止使用 EKU。
- 验证 KeyUsage (KU) 属性的值,该值必须是 Unset 或 DigitalSignature。
- 验证是否存在私钥。
- 验证证书是否处于活动状态、未过期且未被吊销。
我错误地认为,通过转到 证书属性 - 证书用途 - 仅启用以下属性 并取消选中为此目的无效的属性(即除代码签名之外的所有属性),我可以使用证书我们已经有了。这行不通。
我通过获取仅将代码签名作为增强密钥用法的证书解决了我的问题。