数字签名可执行文件对我们有多重要?

12
我们生产一种内容管理系统。它是基于数据库的系统,仅供企业和组织使用,并且从未从互联网上下载过。也就是说,它不是某些人可能无意中发现并想知道它是什么以及是否安全运行的软件。在我们的系统被销售的20多年中,其可执行文件从未被数字签名过。现在是时候开始签名了吗?
首先,我可以想到一些优点和缺点:
优点:
  • 如果使用Verisign证书,则可以使用Windows错误报告
  • 当Windows Vista和Windows 7显示那些恼人的UAC消息时,签名的应用程序会更好地呈现。
  • 缺点:
  • 证书需要花钱。虽然不多,但如果它们是无用的,那就太多了。
  • 签名有一些维护开销,我不知道有多少。
  • 3个回答

    4

    优点:如果使用Verisign证书,则可以使用Windows错误报告

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

    缺点:签名有一些维护开销,具体多少我不知道。很想听听你的意见…

    维护开销高度依赖于您的构建流程的质量。如果您手动构建应用程序,则意味着需要执行更多步骤。然而,如果您有一个构建流水线并且您的构建是自动化的,则代码签名意味着将几行代码添加到构建脚本中,并存储代码签名证书的私钥,以便构建可以访问它(如果您有一个构建服务器,您的代码签名证书很可能需要存储在其中)。

    优点:当Vista / 7显示那些恼人的UAC消息时,签名应用程序会更好地呈现

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


    你关于UAC消息的说法是正确的 - 经过一些努力,我们的应用程序现在以用户权限运行,所以这些消息不应该出现。但是如果其他消息出现了(例如防火墙),如果该应用程序已签名,则它们可能会更友好。 - Eran
    防火墙消息和其他类似的事情可以通过设置来处理(前提是您正在使用设置)。通常认为以提升的特权运行设置是合理的,但运行应用程序则不是。 - Suma

    2

    从技术角度来看,您已经列出了优缺点。

    从商业角度来看,这取决于您的用户。也许如果您是面向B2B销售,那么这并不重要,因为如果您面向的是B2C或不太精通技术的用户,他们会更喜欢一个更好看的UAC消息。

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

    我宁愿将这些努力花在改进其他方面。


    0
    签名有一些维护开销,具体多少我不清楚。我相信如果您分发已签名的可执行文件,则所有依赖库也必须进行签名。如果您正在使用一些第三方模块,而您无法控制这些模块,那么可能会出现问题。

    你的意思是使用相同证书进行签名,还是使用任何证书进行签名?前者不可能(无法签署kernel32.dll),但后者似乎也有问题。如果我们的应用程序中部署了一个未签名的第三方可执行文件,我们是否可以为其签名? - Eran

    网页内容由stack overflow 提供, 点击上面的
    可以查看英文原文,
    原文链接