我有一个由五个项目组成的解决方案,每个项目都编译为单独的程序集。现在我正在对它们进行代码签名,但我很确定我做错了。这里的最佳实践是什么?

  • 使用不同的密钥对每个签名进行签名;确保密码不同
  • 使用不同的密钥对每个签名进行签名;如果需要,请使用相同的密码
  • 使用相同的密钥对每个签名
  • 完全是别的东西

基本上我不太确定“签名”对他们有什么作用,或者这里的最佳实践是什么,所以更普遍的讨论会很好。我真正知道的是 福克斯警察 对我大喊大叫,通过单击“签署此程序集”复选框并使用 Visual Studio (2008) 生成 .pfx 文件,很容易修复。

有帮助吗?

解决方案

如果您的唯一目标是阻止 FxCop 对您大喊大叫,那么您已经找到了最佳做法。

签署程序集的最佳实践完全取决于您的目标和需求。我们需要更多信息,例如您的预期部署:

  • 供个人使用
  • 在公司网络 PC 上用作客户端应用程序
  • 在网络服务器上运行
  • 在 SQL Server 中运行
  • 通过互联网下载
  • 以收缩包装的 CD 形式出售
  • 直接上传到控制论大脑
  • ETC。

通常,您使用代码签名来验证程序集是否来自特定的受信任来源并且未被修改。 所以每个人都有相同的密钥就可以了。 现在如何确定信任和身份则是另一回事了。

更新: 当您通过网络进行部署时,如果您获得了 来自证书颁发机构的软件签名证书. 。然后,当他们下载您的程序集时,他们可以验证它们来自 多梅尼克软件商场, ,并且它们在此过程中没有被修改或损坏。下载安装程序时,您还需要对其进行签名。这可以防止某些浏览器显示警告,表明它是从未知来源获取的。

请注意,您需要支付软件签名证书的费用。您得到的是证书颁发机构成为受信任的第三方,验证您的身份。这是因为信任网络可以追溯到安装在操作系统中的根证书。有几个证书颁发机构可供选择,但您需要确保目标操作系统上的根证书支持它们。

其他提示

已签名和未签名程序集之间最明显的区别在于 ClickOnce 应用程序。如果您不签署它,那么用户在第一次运行您的应用程序时将收到一个可怕的“未知发布者”警告对话框。如果您已使用 来自受信任机构的证书, ,然后他们会看到一个不那么可怕的对话框。据我所知,使用您自己生成的证书进行签名不会影响“未知发布者”警告。 Comodo 的即时 SSL 有对话框的示例。

还有一些更微妙的差异。您必须先对程序集进行签名,然后才能将其安装到全局程序集缓存 (GAC) 中,以便多个应用程序共享该程序集。签名是代码访问安全 (CAS) 不可或缺的一部分,但我还没有找到任何人可以让 CAS 正常工作。我非常确定 GAC 和 CAS 都可以与您自己生成的证书配合良好。

它很有帮助,因为可执行文件需要一个强命名的程序集。它可以阻止任何人恶意地在另一个程序集中替换您的一个程序集。此外,用户还可以根据强名称授予程序集 CAS 权限。

我认为您不应该分发 .pfx 文件,您应妥善保管该文件以便退出程序集。

对 PFX 文件保密非常重要,因为它包含私钥。

如果该密钥可供其他人使用,那么任何人都可以对伪装成您的程序集或程序进行签名。

要将您的姓名与程序集关联起来(在 Windows 中),您需要获得由可信机构签名的数字证书(PFX 文件中包含您姓名的部分)。

实际上,您将获得一个新证书,但包含相同的信息。

您必须为该证书付费(可能每年),但是 证书颁发机构 将有效地证明您的存在(在您将护照或驾驶执照的副本以及国内账单传真给他们之后)。

签名用于唯一地标识程序集。更多详细信息请参见 如何:签署程序集 (Visual Studio).

就最佳实践而言,只要程序集具有不同的名称,就可以使用相同的密钥。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top