Aar*_*ron 19 .net c# digital-certificate assembly-signing
我的方案是我们有一个程序(exe),如果在特定文件夹中找到,将启动其他程序.我想确保它只启动使用我们的公司证书(Verisign批准等)签署的计划.从本质上讲,它只会以与自身相同的证书启动程序.我不想发送证书本身.
我一直在搜索网络和系统名称空间,并没有找到一个明确的例子,从文件中读取证书数据并验证它,并可以检查另一个文件.我发现的最接近的是Signtool,并且在单独的exe中进行此验证有点少.我知道强命名的东西不会有帮助,因为数字签名的文件是不同的,如此处有用的解释(http://blog.codingoutloud.com/2010/03/13/three-ways-to-tell-whether-an-assembly- dl-is-strong-named /)SO中的其他一些示例显示了原始数据的加密和验证,但没有以某种方式将它打包在一起的程序集.
任何想法或建议?
Kri*_*erA 17
这是一篇博客文章,其中包含有关如何验证程序集签名的代码示例:http:
//blogs.msdn.com/b/shawnfa/archive/2004/06/07/150378.aspx
最后的代码示例显示了如何验证程序集是否由Microsoft签名 - 您可以通过获取公司证书的证书令牌来执行相同操作.
更新:用户@Saber使用以下更新对此进行了编辑,但该更新被其他人拒绝.但是,这是非常有效的建议,所以我重新发布他/她的编辑,因为SO不会让我批准它:
编辑(谢谢你,OP):如果你想更安全地执行此操作(即使程序更加防篡改),请在程序中引用一个用相关键强命名的程序集,然后使用引用程序集的标记与调用程序集的标记进行比较.如果使用字节数组(根据链接),可以简单地进行十六进制编辑和更改.