use*_*352 4 c# code-signing-certificate
我收到了第三方dll.运行sn.exe - T name.dll我得到公共令牌密钥,所以这告诉我它已签名.
Microsoft(R).NET Framework强名称实用程序版本3.5.30729.1版权所有(c)Microsoft Corporation.版权所有.
公钥令牌是xXXXxxxXXXX
问题1.当我签署自己的DLL并右键单击选择属性时,我看到数字签名.在这个DLL上我没有看到这个标签.为什么?如果签名我应该看到它.
问题2.我有自己的证书,我想使用我自己的证书签署这个DLL是否可能?以前的签名会发生什么.你能用多个键签一个dll(我猜不只是想确认).
问题3.无论出于何种原因,我都可以签署这个dll,即使它已经签署了?当我使用自己的证书签名时,当我点击属性时,我会看到它的数字签名选项卡.
不确定这里发生了什么?
这里有两组签名," 强名称签名 "和" Authenticode签名 ".
强名称签名是一个特定于.NET的功能,用于证明"我编译的程序集和我在运行时使用的程序集是由同一个人创建的,具有相同的版本号,并且未被第三方修改" .这是您看到的签名sn.exe,.NET应用程序只能有一个强名称签名
该验证码签名的任何一项功能.cab,.cat,.ctl,.dll,.exe,或.ocx文件,这是用来证明"此文件从这个特定的来源,并且没有被修改".这是您在"数字签名"选项卡上看到的签名,可执行文件可以具有多个Authenticode签名,但这种签名并不常见.
.NET没有任何"自动"读取Authenticode,它只检查文件的强名称,如果通过或失败,它将停止签名检查.
要具体回答你的问题:
如果您使用强名称签名,则覆盖旧名称,如果在编译程序集后执行此操作,则会破坏程序,并且程序集设置为检查强名称签名,因为它将需要旧签名.这也可能会破坏使用相同第三方DLL的其他软件,因为它们期望来自供应商的原始签名.
如果您对Authenticode签名,则将您的签名附加到文件上的Authenticode签名列表中.除非您对Authenticode签名进行自定义代码检查,否则这不会影响.NET的运行时.