ClickOnce 和 Authenticode

“Authenticode”是一种 Microsoft 技术,该技术使用行业标准的加密技术,采用数字证书对应用程序代码进行签名,数字证书用于验证应用程序发行者的真实性。 通过对应用程序部署使用 Authenticode,ClickOnce 可降低特洛伊木马程序入侵的风险。特洛伊木马程序是一种病毒或其他有害程序,恶意第三方将其伪装为来自已确认且可信任的源的合法程序。 用数字证书为 ClickOnce 部署签名是一个可选步骤,用于验证是否未篡改程序集和文件。

以下各节描述在 Authenticode 中使用的不同类型的数字证书、如何使用证书颁发机构 (CA) 验证证书、时间戳在证书中的角色以及可用于证书的存储方法。

Authenticode 和代码签名

“数字证书”是一个文件,该文件包含一个加密公钥/私钥对以及元数据,元数据描述将该证书颁发给哪个发行者和颁发该证书的机构。

有各种类型的 Authenticode 证书。 每种证书针对不同类型的签名进行了配置。 对于 ClickOnce 应用程序,您必须具有对代码签名有效的 Authenticode 证书。如果尝试用另一种类型的证书(如数字电子邮件证书)对 ClickOnce 应用程序进行签名,则该证书将无效。 有关更多信息,请参见 Introduction to Code Signing(代码签名简介)。

可以通过以下三种方式之一获取证书以用于代码签名:

  • 从证书供应商处购买证书。

  • 从您的组织中负责创建数字证书的小组那里接收证书。

  • 使用 Windows 软件开发包 (SDK) 附带的 MakeCert.exe 生成自己的证书。

ms172240.collapse_all(zh-cn,VS.110).gif使用证书颁发机构对用户的好处

使用 MakeCert.exe 实用工具生成的证书通常称为“自发证书”或“测试证书”。 这种证书的工作方式与 .snk 文件在 .NET Framework 中的工作方式基本相同。 它仅包含一个加密的公钥/私钥对,并不包含任何有关发行者的可验证信息。 您可以使用自发证书在 Intranet 上部署具有高度信任的 ClickOnce 应用程序。然而,当这些应用程序在客户端计算机上运行时,ClickOnce 会将它们确定为来自未知发行者。 默认情况下,用自发证书签名并通过 Internet 部署的 ClickOnce 应用程序无法利用受信任的应用程序部署。

相反,从 CA(如证书供应商或您的企业中的部门)收到的证书会为您的用户提供更高的安全性。 该证书不仅会标识已签名软件的发行者,还会通过与签发该证书的 CA 进行核实来验证发行者的身份。 如果该 CA 不是根颁发机构,则 Authenticode 还会沿证书链回溯到根颁发机构来验证该 CA 是否被授权颁发证书。 为了获取更高的安全性,在任何可能的时候都应使用由 CA 颁发的证书。

有关生成自发证书的更多信息,请参见Makecert.exe(证书创建工具)

ms172240.collapse_all(zh-cn,VS.110).gif时间戳

用于对 ClickOnce 应用程序签名的证书在某个时间段之后将会到期,这个期限通常为十二个月。 为了省去使用新的证书不断地对应用程序重复签名的工作,ClickOnce 支持时间戳。 如果使用时间戳对应用程序进行签名,则只要时间戳是有效的,即使应用程序的证书已到期,也会继续接受该证书。 这将允许证书已过期但时间戳有效的 ClickOnce 应用程序下载并运行。还允许证书过期的已安装应用程序继续下载并安装更新。

若要在应用程序服务器中包含时间戳,时间戳服务器必须是可用的。 有关如何选择时间戳服务器的更多信息,请参见如何:对应用程序和部署清单进行签名

ms172240.collapse_all(zh-cn,VS.110).gif更新过期证书

在 .NET Framework 的早期版本中,更新其证书已过期的应用程序可能导致应用程序无法正常工作。 若要解决此问题,请使用以下方法之一:

  • 在 Windows XP 上,将 .NET Framework 更新为版本 2.0 SP1 或更高版本;在 Windows Vista 上,将 .NET Framework 更新为版本 3.5 或更高版本。

  • 卸载应用程序,并用有效证书重新安装新的版本。

  • 创建更新证书的命令行程序集。 有关此过程的分步说明可以在 Microsoft 支持文章 925521 中找到。

ms172240.collapse_all(zh-cn,VS.110).gif存储证书

  • 可以将证书在文件系统上存储为 .pfx 文件,也可以将证书存储在密钥容器中。 Windows 域上的用户可以拥有若干数目的密钥容器。 默认情况下,MakeCert.exe 会将证书存储在您个人的密钥容器中,除非您指定让 MakeCert.exe 将证书保存到 .pfx 中。 用于创建 ClickOnce 部署的 Windows SDK 工具 Mage.exe 和 MageUI.exe 允许您使用以上述任一方式存储的证书。

请参见

参考

Mage.exe(清单生成和编辑工具)

概念

ClickOnce 安全和部署

保护 ClickOnce 应用程序

受信任的应用程序部署概述