对应用程序包签名(Windows 应用商店应用程序)
默认情况下,Visual Studio 生成的所有应用程序包都使用测试证书进行签名。在创建包时,Visual Studio 将生成包括签名包本身的文件夹。该文件夹中包括的证书 (.cer) 文件包含用于对包进行签名的公钥。在安装应用程序包之前,必须在计算机上安装此密钥。
生成测试证书
在创建项目时,会生成证书文件 (.pfx) 并将其添加到项目中。
证书的“主题”字段设置为源清单 (.appxmanifest) 文件的 Identity 元素的 Publisher 特性。
如果创建本地包,则 Publisher 特性的默认值为您的用户名。
如果为 Windows 应用商店创建包或将您的应用程序与其关联,则在包创建期间登录时,Publisher 特性将设置为从 应用商店的开发人员帐户中获取的 Publisher ID。
证书创建过程还会向项目文件中添加属性:
<PackageCertificateKeyFile> RisingStar_TemporaryKey.pfx </PackageCertificateKeyFile>
PackageCertificateKeyFile 的值是源证书本身的相对路径或完整路径。
如果缺少证书,则它在从**“存储”**菜单创建包时创建,而不是在命令提示符中创建包时创建。在 Visual Studio 创建证书时,会设置以下属性的值:
**“基本约束”**扩展的值设置为 Subject Type=End Entity。
备注
基本约束扩展标识证书的主体是否为证书颁发机构 (CA)。此扩展还定义包括此证书的有效证书路径的最大深度。“基本约束”属性指定认证的公钥是否可以验证证书签名。
“增强型密钥用法”(EKU) 扩展的值将设置为**“代码签名”**。
证书在创建之日起一年内有效。有关如何续订证书的信息,请参见续订证书。
提示
如果在签名过程中出现类似于“指定的证书无效,因为它已过期或有其他发行版”的错误,请使用清单设计器创建一个测试证书来替换旧证书。
验证证书
在打包过程中,Visual Studio 会通过以下方式验证指定的证书:
验证**“基本约束”**扩展是否存在以及它的值,该值必须是 Subject Type=End Entity 或未指定。
验证**“增强的键用法”属性的值,这必须包含“代码签名”,也可以包含“生存期签名”**。禁止任何其他 EKU。
验证**“KeyUsage (KU)”属性的值,该值必须是“Unset”或“DigitalSignature”**。
验证私钥是否存在。
验证证书是否处于活动状态、尚未过期并且未被撤消。
在某些情况下,您可能需要更好地控制使用的证书以及对证书运行的验证检查。MSBuild 属性 EnableSigningChecks 可控制执行上述哪些证书检查。如果将该属性设置为 True(默认值),则 Visual Studio 会运行所有检查。如果将该属性设置为 False,则 Visual Studio 将仅执行下列任务:
验证私钥是否存在。
验证**“增强型密钥用法”属性的值是否包含“代码签名”**。
验证证书是否处于活动状态、尚未过期并且未被撤消。
备注
当 EnableSignignChecks 设置为 False 时,PowerShell 脚本可能不起作用,因为自定义证书可能不符合该脚本安装应用程序包所需的所有规则。有关更多信息,请参见本地共享应用程序包(Windows 应用商店应用程序)。
选择备用证书
Visual Studio 会在创建项目时自动创建一个证书,但你也可以创建自己的证书或使用现有证书对包签名。
创建或使用备用证书
在**“解决方案资源管理器”中,打开 .appxmanifest 文件的快捷菜单,选择“打开方式”,然后选择“应用程序清单设计器”**。
在**“应用程序清单设计器”中,选择“打包”选项卡,然后选择“选择证书”**按钮。
在**“选择证书”对话框中,展开“配置证书”**列表,然后选择以下选项之一:
从证书存储中选取
从操作系统的证书存储中选取Personal证书之一。从文件中选择
从文件系统中选取现有证书文件。创建测试证书
使用所选择的Publisher ID 创建证书。还可以创建密码。
无论选择哪个选项,证书文件都会添加到项目中,并相应地更新 PackageCertificateThumbprint 和 PackageCertificateKeyFile 项目属性。
备注
如果在签名过程中出现类似于“指定的证书无效,因为它已过期或有其他发行版”的错误,请使用清单设计器创建一个自定义证书来替换旧证书。
续订证书
Visual Studio 生成的默认证书将在一年后的证书创建日期到期。在证书过期之前,必须使用应用程序清单设计器重新生成证书,或如前面的过程所述提供不同的有效证书。
续订证书
在**“解决方案资源管理器”中,打开 .appxmanifest 文件的快捷菜单,选择“打开方式”,然后选择“应用程序清单设计器”**。
在**“应用程序清单设计器”中,选择“打包”选项卡,然后选择“选择证书”**按钮。
在**“选择证书”对话框中,展开“配置证书”列表,然后选择“创建测试证书”**。
在**“创建测试证书”对话框中,单击“确定”**按钮。
Visual Studio 会重新生成该证书,它具有新的到期日期。
删除或导出证书
您可能需要删除或导出已过期或者已被破坏、损坏或被另一个证书替换的证书。有关如何删除或导出证书的信息,请参见如何使用证书控制台。
修改已安装的应用程序
如果修改已安装程序包中的任何文件,签名验证可能会阻止该应用程序启动。若要修改程序包,请使用开发人员许可证在原始的源文件中进行更改,然后重新部署已修改的程序包。有关开发人员许可证的详细信息,请参见获取开发人员许可证(Windows 应用商店应用程序)。