ClickOnce 部署和 Authenticode

更新:2007 年 11 月

“Authenticode”是一种 Microsoft 技术,该技术使用行业标准的加密技术,采用数字证书对应用程序代码进行签名,数字证书用于验证应用程序发行者的真实性。通过将 Authenticode 用于应用程序部署,ClickOnce 帮助防止出现“特洛伊木马”现象,即恶意的第三方将病毒或其他有害程序伪装为来自已建立的可信任源的合法程序。所有 ClickOnce 部署都必须用数字证书进行签名。

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

Authenticode 和代码签名

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

有各种类型的 Authenticode 证书,每种证书为不同类型的签名而配置。对于 ClickOnce 应用程序,您必须具有对代码签名有效的 Authenticode 证书;如果尝试用另一种类型的证书(如数字电子邮件证书)对 ClickOnce 应用程序签名,则签名将无效。有关更多信息,请参见 Introduction to Code Signing(代码签名简介) (https://msdn.microsoft.com/library/default.asp?url=/workshop/security/authcode/intro\_authenticode.asp)。

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

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

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

  • 用 .NET Framework 软件开发工具包 (SDK) 中提供的 MakeCert.exe 生成自己的证书。

使用证书颁发机构对用户的好处

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

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

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

时间戳如何防止意外的过期

即使证书可提供更高的安全性,未经授权的一方仍然可能从证书的合法所有者处获取证书及其相应的密码。默认情况下,由 CA 颁发的证书仅在 12 个月内有效。这强制证书的所有者通过 CA 重新验证其身份,从而确保受安全威胁的证书只能在短时间内使用。

通常,证书过期意味着需要每 12 个月就要对 ClickOnce 应用程序重新签名。Authenticode 通过对时间戳的支持减少了对重新签名的需要。当使用证书对 ClickOnce 部署签名时,ClickOnce 会记录进行签名的日期和时间并将这些信息嵌入在部署的数字签名中。只要部署是在证书仍有效时进行签名的,ClickOnce 就允许应用程序运行,即使证书后来过期也如此。

Visual Studio 和用于创建 ClickOnce 部署的 Windows 软件开发工具包 (SDK) 工具(Mage.exe 和 MageUI.Exe)都支持时间戳。

存储证书

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

请参见

概念

ClickOnce 部署概述

ClickOnce 部署和安全

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

参考

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