.NET程序集是否需要进行代码签名,还是只需要对安装程序进行签名?

5

我的公司终于购买了一个代码签名证书。

我有一个WinForms应用程序(1个exe和几个dll),所有的程序集都已经使用强名称进行了签名。整个应用程序然后被打包成一个msi安装程序。然后我使用NSIS将msi、启动程序和前提条件(Framework、SQL CE等)打包到一个单独的setup.exe中。

显然,我的setup.exe需要被签名,以避免“可怕”的UAC提示。这样做足够吗?还是你也要签名其他文件,特别是.NET程序集?

另一个属于该应用程序的项目是一个Windows服务。你会为该程序集签名吗?

1个回答

5

虽然不是必须的,但这并不是一个坏主意。

编写全面验证签名的安装程序

您可以使用这些指南来覆盖整个 Windows Installer 安装程序,以数字签名方式进行。

Windows Installer 安装程序的作者必须遵循以下规定,以确保安装程序的所有部分都受数字签名保护:

  • 使用内部 cabinet 文件,或使用已签名的外部 cabinet 文件并正确编写 MsiDigitalSignature 表和 MsiDigitalCertificate 表。
  • 仅使用存储在包内或与包一起安装的自定义操作。
  • 对安装程序进行签名。
  • 在包中包含 MsiPatchCertificate 表。要启用用户帐户控制 (UAC) 打补丁,此表必须包含用于识别用于数字签名补丁的签名证书的信息。UAC 打补丁使安装程序的作者能够识别可由非管理员用户在未来应用的数字签名补丁。

上述说明涵盖了您需要为安装程序本身做的事情。程序集的签名则取决于您,它是一个有别于安装程序的单独问题,具有单独的关注点和好处。请阅读 强名称程序集可以让您远离 DLL 地狱 以获取有关程序集签名的更多信息。


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