我有一个.NET程序集,我给它起了很强的名字,可以把它放在GAC中。但是,同一程序集也将在稍后使用.pfx文件进行数字签名。
我注意到,这个程序集已经进行了如此双重的签名,失败了强名称验证,并且没有安装在目标机器的GAC中。
数字签名过程是否可能删除SN键生成的强命名过程?
数字签名是必不可少的,如果2是不兼容的,那么该文件是否可以由.pfx文件进行签名,就像SN命名过程一样容易?
而且,程序集在C++/CLI中,而不是在C#中。
编辑:查看MSDN文档,它说如果使用链接器选项进行强命名,如果使用像mt.exe这样的后处理工具(我不确定Signtool.exe是否属于这些工具),那么程序集就需要辞职。
此外,这一声明:
如果在开发环境中构建时使用签名属性,则可以在构建后事件中显式调用sn.exe (强名称工具),从而成功地对程序集进行签名。
...is有点让人困惑。它指的是哪些属性,CLR属性,还是Linker选项?
发布于 2015-05-08 19:19:10
它们是相容的,应按特定顺序适用:
我经常这样做,C#程序集没有任何问题。我不知道这对于c++来说是不同的。
这是因为强名称哈希代码不包括PE头的某些部分,包括authenticode散列。正如这里所解释的,这里。
发布于 2017-04-20 00:49:18
我们构建了一些C++/CLI程序集。我们使用链接器开关:
然后,在构建后的事件中,我们调用sn.exe来应用测试签名。
稍后,在将程序集包含在合并模块之前,我们调用:
您应该可以只使用/KEYFILE来指定保存键区的snk文件,然后调用signtool来执行Authenticode签名。
除非您正在使用其他的后期构建工具,否则应该可以做到这一点。
https://stackoverflow.com/questions/30122304
复制相似问题