.net - 签署 .NET 程序集的最佳实践?

标签 .net assemblies signing

我有一个由五个项目组成的解决方案,每个项目都编译为单独的程序集。现在我正在对它们进行代码签名,但我很确定我做错了。这里的最佳实践是什么?

  • 使用不同的 key 对每个签名进行签名;确保密码不同
  • 使用不同的 key 对每个签名进行签名;如果需要,请使用相同的密码
  • 使用相同的 key 对每个签名
  • 完全是别的东西

基本上,我不太确定“签名”对他们有什么作用,或者这里的最佳实践是什么,所以更广泛的讨论会更好。我真正知道的是FxCop对我大喊大叫,只需单击“签署此程序集”复选框并使用 Visual Studio (2008) 生成 .pfx 文件即可轻松修复。

最佳答案

如果您的唯一目标是阻止 FxCop 对您大喊大叫,那么您已经找到了最佳做法。

对程序集进行签名的最佳实践完全取决于您的目标和需求。我们需要更多信息,例如您的预期部署:

  • 供个人使用
  • 在公司网络 PC 上用作客户端应用程序
  • 在网络服务器上运行
  • 在 SQL Server 中运行
  • 通过互联网下载
  • 以收缩包装的 CD 形式出售
  • 直接上传到控制论大脑
  • 等等

通常,您使用代码签名来验证程序集是否来自特定的受信任来源并且未被修改。 所以每个人都使用相同的 key 就可以了。现在如何确定信任和身份是另一个故事了。

更新:当您通过网络进行部署时,如果您获得了software signing certificate from a certificate authority,这对您的最终用户有何好处? 。然后,当他们下载您的程序集时,他们可以验证它们来自Domenic 的软件商场,并且在整个过程中没有被修改或损坏。下载安装程序时,您还需要对其进行签名。这可以防止某些浏览器显示警告,表明它是从未知来源获取的。

请注意,您需要支付软件签名证书的费用。您得到的是证书颁发机构成为受信任的第三方,验证您的身份。这是因为信任网络可以追溯到安装在操作系统中的根证书。有几个证书颁发机构可供选择,但您需要确保目标操作系统上的根证书支持它们。

关于.net - 签署 .NET 程序集的最佳实践?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35373/

相关文章:

.net - 在哪里存储程序注册信息

.net - 如何使用 sn.exe -Vr

c# - 如何获取程序集的 namespace 而不是其依赖项?

.net - 您如何签名由ILMerge操作生成的程序集?

ios - Xcode 错误签名无法创建配置文件并且找不到 'com.photo.appwall' 的配置文件

c# - 在 VS2013 中的项目之间共享设置文件

c# - Linq过滤树

.net - LinkedList.Contains。比较对象的方法是什么?

c# - 检查装配体的身份?可能是因为它的强大名称?

.net - 公共(public)开源项目使用什么签名方式?