对强命名的 .NET 程序集进行数字签名

use*_*240 5 .net strongname c++-cli authenticode digital-signature

我有一个 .NET 程序集,我对其进行了强命名,并将其放入 GAC 中。.pfx但是,稍后还会使用文件对同一程序集进行数字签名,以进行数字签名。
我注意到这个经过双重签名的程序集未通过强名称验证,并且不会安装在目标计算机的 GAC 中。

数字签名过程是否有可能删除 SN 密钥生成的强命名过程?

数字签名是必不可少的,如果两者不兼容,那么文件可以由数字签名吗?.pfx像 SN 命名过程一样简单地由文件对文件进行签名?

另外,程序集位于C++/CLI,而不是C#

编辑:查看MSDN 文档,它说是否使用链接器选项进行强命名,以及是否使用像这样的后处理工具mt.exe(我不确定是否Signtool.exe属于这些工具),则需要重新签署程序集。

另外,这个声明:

如果在开发环境中生成时使用签名属性,则可以通过在生成后事件中显式调用 sn.exe(Sn.exe(强名称工具))来成功对程序集进行签名。

...有点令人困惑。它指的是哪些属性,CLR属性还是Linker选项?

Lar*_*ens 5

它们是兼​​容的,并且应按特定顺序应用:

  1. 强名称 (sn.exe)
  2. Authenticode/代码签名/数字签名 (signtool.exe)

我经常这样做,C# 程序集没有出现任何问题。我不知道这对于 C++ 来说会有所不同。

这是有效的,因为强名称哈希代码不包含 PE 标头的某些部分,包括authenticode 哈希。正如这里所解释的。