2010-12-17 40 views
15

在.NET here读过有关强名称,例如,我有以下问题:.NET:强命名与验证码

我们必须与我们签订了所有的EXE的验证码代码签名证书,DLL和MSI文件。这样做的好处是Windows知道MSI来自可信来源,并且如果需要,每个文件的真实性都可以被验证。

我们目前不使用.NET强名。我已经读过强命名文件,这意味着它是用自签名证书进行数字签名的。我对此的看法是,由可信认证中心签署的Authenticode证书比自签名证书更有价值,其真实性无论如何都不能验证,因为它们缺少根证书(我们不会将其分发给最终用户,我们!?)。

问:是否有另外强命名组件的任何值,如果验证码签名已被使用?

回答

11

答案将取决于您为什么创建了一个强名称 - 强名称的用意是为该程序集创建唯一标识。例如,如果您需要在GAC中推送您的程序集,则必须使用强名称。然而,强名称并非真正用于验证发布者的真实性 - Authenticode用于此目的。看到这篇文章:http://blogs.msdn.com/b/shawnfa/archive/2005/12/13/authenticode-and-assemblies.aspx

+0

所以我只需要强大的名字把我的程序集放入GAC。我们不把我们的组件放在那里,所以不需要强名。 – 2010-12-17 14:27:37

+4

它并不完整地发布到GAC--它也可以用来确保应用程序引用的DLL是您想要的 - 因为强名称要求所有被引用的DLL也具有强名称,它可以防止某人交换一个恶意的DLL。再一次,这并不能证实_who_写了它,但它确实确保所有程序集都是由有权访问相同SNK的人编写的 – Basic 2010-12-18 22:46:41