我必须开发一个支持插件的 .NET C# 应用程序。我在网上查了很多资料,好像没那么难。
我只有一个规范,模块的程序集必须在程序集级别上进行验证。当后期绑定发生并加载程序集时,宿主应用程序必须绝对确定:
- 大会没有改变。
- 该组件确实是由该公司提供的。
我读到可以使用密钥对程序集进行签名,但据我所知,这只能证明程序集没有更改。
必须做什么才能确定大会的真实性?
任何帮助将不胜感激。
我必须开发一个支持插件的 .NET C# 应用程序。我在网上查了很多资料,好像没那么难。
我只有一个规范,模块的程序集必须在程序集级别上进行验证。当后期绑定发生并加载程序集时,宿主应用程序必须绝对确定:
我读到可以使用密钥对程序集进行签名,但据我所知,这只能证明程序集没有更改。
必须做什么才能确定大会的真实性?
任何帮助将不胜感激。
就像我在评论中说的那样,之前有人问过这个问题:可以使用强命名程序集来验证程序集作者吗?
此链接提供了一个示例,说明如何根据一组已知的公钥验证公钥:http: //blogs.msdn.com/b/shawnfa/archive/2004/06/07/150378.aspx但它有点旧,我不知道从那以后是否发生了重大变化。
编辑:我看到 SO 答案建议与上面 shawnfa 博客的链接相同的技术,所以它可能仍然存在。
程序集的开发人员需要使用 Authenticode 技术和从批准的证书颁发机构 (CA) 之一获得的 X.509 证书对程序集进行签名。然后您的主机需要验证签名并验证正在加载的程序集签名中的证书。
作为选项之一,我们的产品SecureBlackbox提供执行 Authenticode 签名和验证以及完整 X.509 证书验证的功能。