【问题标题】:How important is it to digitally sign our executables?对我们的可执行文件进行数字签名有多重要?
【发布时间】:2010-02-22 08:50:54
【问题描述】:

我们制作了一个内容管理系统。它是一个基于数据库的系统,仅供企业和组织使用,并且永远不能从 Internet 下载。也就是说,它不是那种有人可能会偶然发现并想知道它是什么以及运行是否安全的软件。在我们销售系统的 20 多年中,它的可执行文件从未经过数字签名。是时候让我们开始签署它们了吗?

对于初学者,我可以想到一些优点和缺点:

  • 亲:如果使用威瑞信证书,可以使用Windows Error Reporting
  • 专业版:当 Windows Vista 和 Windows 7 显示其中一条烦人的 UAC 消息时,已签名的应用程序会更好地呈现出来
  • 缺点:证书要花钱。不是很多,但如果它们没用那就太多了
  • 缺点:签名有一些维护开销,我不知道有多少。

【问题讨论】:

    标签: executable code-signing digital-signature


    【解决方案1】:

    专业人士:如果使用威瑞信证书,可以使用 Windows 错误报告

    实际上,要使用 Windows 错误报告,您需要 Verisign 或其他代码接受的签名证书,但您只需要该证书即可访问 WinQual 系统。 exe 本身根本不需要签名,错误报告在未签名的 exe 上也可以正常工作。

    缺点:签名有一些维护开销,我不知道有多少。很想从你这里...

    维护开销很大程度上取决于构建管道的质量。如果您手动构建您的应用程序,那么是的,这意味着更多的步骤。但是,如果您有构建管道并且您的构建是自动化的,那么代码签名意味着在构建脚本中添加几行并存储代码签名证书的私钥,以便构建可以访问它(如果您有构建服务器,您的代码签名证书很可能需要存储在上面)。

    专业人士:当 Vista/7 显示其中一条令人讨厌的 UAC 消息时,已签名的应用程序会更好地呈现出来

    至于 UAC 提示 - 您的应用程序真的需要提升或管理员权限才能运行吗?避免此提示的最佳方法是根本不需要任何提升的权限。

    【讨论】:

    • 您对 UAC 消息的看法是正确的 - 在对其进行了一些工作之后,我们的应用程序现在以用户权限运行,因此无论如何这些消息都不应该出现。但如果其他人这样做(例如防火墙),如果应用已签名,他们可能会更好。
    • 防火墙消息和其他类似的东西可以通过设置来处理(假设您正在使用设置)。以提升的权限运行设置通常被认为是合理的,但运行应用程序则不然。
    【解决方案2】:

    您已经从技术方面说明了优缺点。

    从业务的角度来看,这取决于您的用户,也许如果您销售的是 B2B,那么如果您销售的是 B2C 或销售给不太懂行的用户,他们会更欣赏更好的 UAC 信息。

    老实说,我不会担心....如果您没有这种冲动并且找不到真正好的理由,那么它并不重要。

    我宁愿把这些精力花在改进其他东西上。

    【讨论】:

      【解决方案3】:

      签名有一些维护开销,我不知道。

      我相信,如果您分发签名的可执行文件,所有依赖库也必须进行签名。如果您使用了一些您无法控制的第三方模块,您可能会遇到问题。

      【讨论】:

      • 你的意思是用同一个证书签名,还是用任何证书签名?前者是不可能的(无法签署 kernel32.dll),但后者似乎也是一个问题。如果未签名的第 3 方可执行文件与我们的应用程序一起部署,我们可以对其进行签名吗?
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-06-14
      • 1970-01-01
      • 2013-02-22
      • 1970-01-01
      • 2011-09-11
      • 2012-06-02
      • 2015-04-30
      相关资源
      最近更新 更多