1

可能重复:
共享程序集 - 是否需要签名?

如果我想构建一个共享程序集,是否需要签署和管理密钥对的开销?

4

4 回答 4

1

如果要将程序集部署到全局程序集缓存,则需要对程序集进行签名:

部署在全局程序集缓存中的程序集必须具有强名称。

在其他部署场景中,强名称(这意味着签名)不是必需的,但鼓励使用。

于 2012-04-11T12:16:56.167 回答
0

首先,构建共享程序集确实涉及使用加密密钥。在构建程序集时只需要公钥。面向 .NET Framework 的编译器提供命令行选项(或使用自定义属性)以在构建程序集时提供公钥。在源数据库中保留一个公共公钥的副本并将构建脚本指向该密钥是很常见的。在组件发货之前,必须使用相应的私钥对组件进行完全签名。这是使用名为 SN.exe(强名称)的 SDK 工具完成的。

强名称签名不像 Authenticode 那样涉及证书。不涉及第三方组织,无需支付任何费用,也没有证书链。此外,验证强名称的开销远低于 Authenticode。但是,强名称不会做出任何关于信任特定发布者的声明。强名称允许您确保给定程序集的内容没有被篡改,并且在运行时代表您加载的程序集来自与您开发所针对的发布者相同的发布者。但它没有说明您是否可以信任该发布者的身份。

希望这可以帮助。

于 2012-04-11T12:16:44.983 回答
0

其实没有。.NET 不会强制您对程序集进行签名。此外,.NET 中的所有程序集都是共享的。您不能像使用 C++ 或任何其他本地语言一样构建静态库。

您需要签署程序集的唯一情况是您需要在Globall Assembly Cache中部署它。

于 2012-04-11T12:17:43.803 回答
0

不,这不是必需的。
签名可用于增加信任,例如在使用有效证书唱歌时,或在您对程序集进行强名称签名时防止程序集被更改。
只有GAC中的程序集需要签名。

于 2012-04-11T12:17:43.427 回答