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

时间:2010-02-12 16:33:09

标签: code-signing

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

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

微软自己似乎不一致地处理这个问题:

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

1 个答案:

答案 0 :(得分:3)

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

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

  1. 它可能有某种优势 与反病毒供应商一起治疗 你的文件更值得信赖, 因此支持/安装较少 麻烦。
  2. 它将文件标记为对普通用户更可信赖,例如,当我使用MS自动运行清理病毒感染系统时,我倾向于寻找没有签名的伪劣东西,它突出了一英里。
  3. 你想看起来更专业。
  4. 我不知道检查签名有什么开销,所以旧系统可能会更慢。此外,如果您的证书来自cheapo cert供应商,则根CA可能不会包含在较旧的平台中(XP pre SP2等)。

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

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

    有点乱,但我觉得没有正确答案。