如何:对应用程序和部署清单进行签名

为了使用 ClickOnce 部署发布应用程序,应用程序和部署清单必须使用公钥/私钥对进行强命名并使用 Authenticode 技术进行签名。 可以使用 Windows 证书存储区的证书或密钥文件对清单进行签名。

对 ClickOnce 清单进行签名对于基于 .exe 的应用程序是可选的。 有关更多信息,请参见本文档中的“生成未签名的清单”一节。

有关创建密钥文件的信息,请参见如何:创建公钥/私钥对

提示

Visual Studio 仅支持具有 .pfx 扩展名的个人信息交换 (PFX) 密钥文件。 但是,可以使用“选择证书”对话框从当前用户的 Windows 证书存储区中选择其他类型的证书来对清单进行签名。

可以使用**“项目设计器”“签名”**页中的选项对应用程序和部署清单进行签名。 有关更多信息,请参见“项目设计器”->“签名”页

以下过程仅适用于对应用程序和部署清单进行签名。 如果要为程序集签名,请参见如何:对程序集进行签名 (Visual Studio)

访问“签名”页

  1. 在项目节点在**“解决方案资源管理器”中处于选中状态下,从“项目”菜单中,单击“属性”(或在“解决方案资源管理器”中右击该项目节点,然后单击“属性”**)。

  2. 在**“项目设计器”中,单击“签名”**选项卡。

使用证书对应用程序和部署清单进行签名

  1. 在**“签名”页上,选中“为 ClickOnce 清单签名”**复选框。

  2. 单击**“从存储区选择”**按钮。

    出现“选择证书”对话框,并显示 Windows 证书存储区的内容。

  3. 选择要用来对清单进行签名的证书。

  4. 或者,还可以在**“时间戳服务器 URL”**文本框中指定时间戳服务器的地址。 此服务器提供一个时间戳指明对清单进行签名的时间。

使用现有密钥文件对应用程序和部署清单进行签名

  1. 在**“签名”页上,选中“为 ClickOnce 清单签名”**复选框。

  2. 单击**“从文件选择”**按钮。

    将出现**“选择文件”**对话框。

  3. 在**“选择文件”对话框中,浏览至要使用的密钥文件 (.pfx) 的位置,然后单击“打开”**。

    提示

    此选项仅支持具有 .pfx 扩展名的文件。 如果有其他格式的密钥文件或证书,请将它存储在 Windows 证书存储区中并选择前面的过程中描述的证书。 选定证书的用途应该包括代码签名。

    出现“输入密码以打开文件”对话框。 (如果 .pfx 文件已经存储在 Windows 证书存储区中或没有密码保护,则不会提示您输入密码。)

  4. 输入访问密钥文件的密码,然后按 Enter。

使用测试证书对应用程序和部署清单进行签名

  1. 在**“签名”页上,选中“为 ClickOnce 清单签名”**复选框。

  2. 若要创建用于测试的新证书,请单击**“创建测试证书”**按钮。

  3. “创建测试证书”对话框中,输入密码以帮助保护测试证书的安全。

生成未签名的清单

对 ClickOnce 清单进行签名对于基于 .exe 的应用程序是可选的。 下面的过程演示如何生成未签名的 ClickOnce 清单。

重要说明重要事项

虽然未签名的清单可以简化应用程序的开发和测试过程, 但也会在生产环境中带来重大的安全风险。 仅当 ClickOnce 应用程序在与 Internet 或其他恶意代码源完全隔离的 Intranet 内的计算机上运行时,才应考虑使用未签名的清单。

默认情况下,ClickOnce 自动生成签名的清单,除非专门从生成的哈希中排除一个或多个文件。 也就是说,如果将所有文件都包含在哈希中,则发布应用程序会得到经过签名的清单,即使清除了**“为 ClickOnce 清单签名”**复选框也是如此。

生成未签名的清单并将所有文件包含在生成的哈希中

  1. 若要生成包含哈希中所有文件的未签名清单,必须首先将应用程序与签名的清单一起发布。 因此,应首先按照上面的过程之一为 ClickOnce 清单签名,然后再发布应用程序。

  2. 在**“签名”页上,清除“为 ClickOnce 清单签名”**复选框。

  3. 重新设置发布版本,以使应用程序仅有一个版本可用。 默认情况下,您每次发布应用程序时,Visual Studio 都会自动递增发布版本的版本号。 有关更多信息,请参见如何:设置 ClickOnce 发布版本

  4. 发布应用程序。

生成未签名的清单并从生成的哈希中排除一个或多个文件

  1. 在**“签名”页上,清除“为 ClickOnce 清单签名”**复选框。

  2. 打开**“应用程序文件”对话框,对于要从生成的哈希中排除的文件,请将“哈希”设置为“排除”**。

    提示

    从哈希中排除文件会将 ClickOnce 配置为禁用对清单的自动签名,这样您就无需像上面的过程中介绍的那样首先将应用程序与签名的清单一起发布。

  3. 发布应用程序。

请参见

任务

如何:创建公钥/私钥对

如何:延迟为程序集签名 (Visual Studio)

参考

“项目设计器”->“签名”页

概念

具有强名称的程序集

ClickOnce 安全和部署