.NET:强命名与Authenticode

Hel*_*ein 17 .net security strongname assemblies authenticode

例如,在这里阅读了.NET中的强名称后,我有以下问题:

我们有一个Authenticode代码签名证书,我们用它来签署所有EXE,DLL和MSI文件.这样做的好处是,Windows知道MSI来自可靠的来源,并且如果需要,还可以验证每个文件的真实性.

我们目前不使用.NET强名称.我已经读过,强命名文件本质上意味着它使用自签名证书进行数字签名.我对此的看法是,由受信任的证书颁发机构签名的Authenticode证书比自签名证书更有价值,该证书的真实性无论如何都无法验证,因为它们缺少根证书(我们不打算将其分发给最终用户,是我们!?).

问题:如果已使用Authenticode签名,是否还有其他强命名程序集的值?

Vin*_*ayC 14

答案取决于您创建强名称的原因 - 强名称的用途是为程序集创建唯一标识.例如,如果您需要在GAC中推送程序集,则必须使用强名称.然而,强名称并不意味着验证发布者的真实性 - Authenticode服务于此目的.请参阅此文章:http://blogs.msdn.com/b/shawnfa/archive/2005/12/13/authenticode-and-assemblies.aspx

  • 它不是_entirely_用于发布到GAC - 它还可以用于确保您的应用程序引用的DLL是您想要的 - 因为强名称要求所有引用的DLL也具有强名称,它会阻止某人交换恶意DLL.同样,这并不能确认_who_写了它但它确实确保所有程序集都是由具有相同SNK访问权限的人编写的 (6认同)