代码签名:我应该签署哪些文件类型,为什么?

oef*_*efe 4 code-signing

我有一个全新的代码签名证书,并且一直想知道我应该签署哪些文件。

显然,安装 .msi 包和所有运行提升的 .exe 都应该签名以避免“未知发布者”警告,但我是否应该签署其他可执行文件,例如不需要提升、.dll 或 .oxc 的 .exe?

微软自己似乎对此处理不一致:

  • 在 Office 2007 中,所有可执行文件都被分配
  • 在 Visual Studio 2008 中,所有 .exe 和许多 .dll 都已签名,但是,也有很多未签名的 DLL(显然是强命名的程序集,也许他们认为强命名就足够了)
  • 在 Windows (7) 中,可执行文件和 dll 都没有签名(甚至不需要 UAC 的可执行文件,例如 mmc.exe!)

Rya*_*ill 5

我想你已经回答了你自己的问题,只在需要的地方签名以避免提示。

我会考虑签署所有内容的原因只有几个。

  1. 它可能具有某种优势,反病毒供应商将您的文件视为更值得信赖,因此支持/安装麻烦更少。
  2. 它将文件标记为对一般用户更值得信赖,例如,当我使用 MS 的自动运行清理受病毒感染的系统时,我倾向于寻找没有签名的劣质文件,它会伸出一英里。
  3. 你想看起来更专业。

我不知道检查签名有什么开销,所以旧系统可能会更慢。此外,如果您的证书来自便宜的证书供应商,则根 CA 可能不包含在旧平台(XP pre SP2 等)中。

哦,是的,我也只会将它作为构建的一部分(集成到 MSBuild 或构建服务器中),因为它可能会变得乏味。

请记住不要让其他任何人访问您的密钥,否则您将被撤销它,并且安装可能会突然停止工作。因此,请为开发人员使用自签名证书,并将真正的密钥锁定在构建服务器上。

有点啰嗦,但我认为没有正确的答案。