管理 Visual Studio 用来注册应用程序的证书

 

仅适用于 Windows

在创建应用程序包时,Visual Studio 会对您的应用程序进行签名。您可以通过以下方式管理 Visual Studio 用来对您的应用程序进行签名的证书。

  • 生成测试证书

  • 选择备用证书

  • 续订证书

  • 删除或导出证书

  • 决定希望 Visual Studio 执行的验证检查

  • 修改已安装的应用程序

备注

如果在签名过程中出现类似于“指定的证书无效,因为它已过期或有其他发行版”的错误,请使用清单设计器创建一个测试证书来替换旧证书。

生成测试证书

默认情况下,Visual Studio 生成的所有应用程序包都使用测试证书进行签名。在创建包时,Visual Studio 将生成包括签名包本身的文件夹。该文件夹中包括的证书 (.cer) 文件包含用于对包进行签名的公钥。

生成测试证书时 Visual Studio 对项目进行的更改

证书创建过程还会向项目文件中添加属性:

<PackageCertificateKeyFile>
   RisingStar_TemporaryKey.pfx
</PackageCertificateKeyFile>

PackageCertificateKeyFile 的值是源证书本身的相对路径或完整路径。

测试证书中的属性和扩展值

在 Visual Studio 生成的测试证书中,将证书的**“主题”**字段设置为源清单 (.appxmanifest) 文件的 Identity 元素的 Publisher 特性。

  • 如果创建本地包,则 Publisher 特性的默认值为您的用户名。

  • 如果创建包或将您的应用程序与其关联,则在包创建期间登录时,会将 Publisher 特性设置为从开发人员帐户获取的 Publisher ID

**“基本约束”**扩展的值设置为 Subject Type=End Entity

备注

基本约束扩展标识证书的主体是否为证书颁发机构 (CA)。此扩展还定义包括此证书的有效证书路径的最大深度。“基本约束”属性指定认证的公钥是否可以验证证书签名。

“增强型密钥用法”(EKU) 扩展的值将设置为**“代码签名”**。

选择备用证书

Visual Studio 会在创建项目时自动创建一个证书,但你也可以创建自己的证书或使用现有证书对包签名。

创建或使用备用证书

  1. 在**“解决方案资源管理器”中,打开 .appxmanifest 文件的快捷菜单,选择“打开方式”,然后选择“应用程序清单设计器”**。

  2. 在**“应用程序清单设计器”中,选择“打包”选项卡,然后选择“选择证书”**按钮。

  3. 在**“选择证书”对话框中,展开“配置证书”**列表,然后选择以下选项之一:

    • 从证书存储中选取
      从操作系统的证书存储中选取Personal证书之一。

    • 从文件中选择
      从文件系统中选取现有证书文件。

    • 创建测试证书
      使用所选择的Publisher ID 创建证书。还可以创建密码。

无论选择哪个选项,证书文件都会添加到项目中,并相应地更新 PackageCertificateThumbprintPackageCertificateKeyFile 项目属性。

续订证书

Visual Studio 生成的默认证书将在一年后的证书创建日期到期。在证书过期之前,必须使用应用程序清单设计器重新生成证书,或如前面的过程所述提供不同的有效证书。

续订证书

  1. 在**“解决方案资源管理器”中,打开 .appxmanifest 文件的快捷菜单,选择“打开方式”,然后选择“应用程序清单设计器”**。

  2. 在**“应用程序清单设计器”中,选择“打包”选项卡,然后选择“选择证书”**按钮。

  3. 在**“选择证书”对话框中,展开“配置证书”列表,然后选择“创建测试证书”**。

  4. 在**“创建测试证书”对话框中,单击“确定”**按钮。

    Visual Studio 会重新生成该证书,它具有新的到期日期。

删除或导出证书

您可能需要删除或导出已过期或者已被破坏、损坏或被另一个证书替换的证书。有关如何删除或导出证书的信息,请参见如何使用证书控制台

决定希望 Visual Studio 执行的验证检查

在打包过程中,Visual Studio 会通过执行大量验证检查来验证证书。

在某些情况下,您可能需要更准确地控制所使用的证书,从而进一步确认您希望 Visual Studio 对证书运行的验证检查。通过将 MSBuild 属性 EnableSigningChecks 设置为**“False”**,可以实现此目的。

如果将该属性设置为 False,则 Visual Studio 将仅执行下列验证检查:

  • 验证私钥是否存在。

  • 验证**“增强型密钥用法”属性的值是否包含“代码签名”**。

  • 验证证书是否处于活动状态、尚未过期并且未被撤消。

如果将该属性设置为 True(默认值),则 Visual Studio 会运行下列其他检查。

  • 验证**“基本约束”**扩展是否存在以及它的值,该值必须是 Subject Type=End Entity 或未指定。

  • 验证**“KeyUsage (KU)”属性的值,该值必须是“Unset”“DigitalSignature”**。

修改已安装的应用程序

如果修改已安装程序包中的任何文件,签名验证可能会阻止该应用程序启动。若要修改程序包,请在原始源文件中进行更改,然后重新部署已修改的程序包。

请参阅

打包适用于 Windows 10 的通用 Windows 应用