我有一个我强烈命名的.NET程序集,将它放在GAC中。但是,同样的程序集也会在稍后使用.pfx
文件进行数字签名,以进行数字签名
我注意到这个双重签名的程序集未通过强名称验证,也没有安装在目标机器的GAC中。
数字签名程序是否可能会删除SN密钥生成的强命名过程?
数字签名是必不可少的,如果2不兼容,那么文件是否可以由.pfx
文件签名,就像SN命名过程一样容易?
此外,程序集位于C++/CLI
,而不是C#
。
编辑:查看MSDN Documentation,它说是否使用链接器选项进行强命名,以及使用mt.exe
之类的后期处理工具(我不确定是否Signtool.exe
属于这些工具之中),大会需要辞职。
另外,这句话:
如果在开发环境中构建时使用签名属性,则可以通过在构建后事件中显式调用sn.exe(Sn.exe(强名称工具))来成功签署程序集。
......有点混乱。它引用了哪些属性,CLR
属性或Linker
选项?
答案 0 :(得分:2)
它们兼容,应按特定顺序应用:
我经常这样做,没有任何C#程序集问题。我不知道这对于c ++会有所不同。
这是有效的,因为强名称哈希码不包含PE头的某些部分,包括authenticode哈希。正如此处here所述。
答案 1 :(得分:0)
我们构建了一些C ++ / CLI程序集。我们使用链接器开关:
然后,在构建后的事件中,我们调用sn.exe来应用测试签名
稍后,就在将程序集包含在合并模块中之前,我们调用:
您应该能够使用/ KEYFILE指定包含密钥对的snk文件,然后只需调用signtool来执行Authenticode签名。
除非您使用其他一些后期构建工具,否则应该这样做。