读取执行程序集签名pfx / cert

时间:2014-11-08 04:00:54

标签: c# code-signing digital-signature digital-certificate

这是一个试图理解新材料的学术问题。在正规学校意义上不是学术性的,而是在正在进行的教育意义上,并且想要掌握我以前从未接触过的发展领域。

因此,在我的理解中,我创建了一个程序集并通过"签署它"我创建了一个强名称/ X509Certificate。

所以我创建了一个空的winapp。我转到签名选项卡上的项目属性,并使用密码对程序集进行签名。

文件testing.pfx已添加到我的项目中。

在表单加载中我然后执行这段代码以为我会看到我的程序集签名证书我不会因为它是null ... ??

Assembly ass = Assembly.GetExecutingAssembly();
Module mod = ass.GetModules().First();
X509Certificate cert = mod.GetSignerCertificate();

cert为null。这是为什么?我做错了什么来取回证书,或者我脑子里乱七八糟的东西和我要找的东西不在我看的地方?

谢谢


修改

@p e p我在阅读你的帖子和msdn。

之后使用了以下内容
  

signtool sign / a C:/....../ MyFile.exe

     

signtool sign / f C:/....../ MyCert.pfx / p MyPassword C:/....../ MyFile.exe

两人都说他们成功完成了。但是,运行上面的代码块仍会产生空证书。

现在我可能错过了或者我做错了是我正在使用visual studio调试版本,这是我用于签名的exe的路径。

C:.... \ LicensedControlTest \ OBJ \ 86 \调试

1 个答案:

答案 0 :(得分:1)

您需要Authenticode签署程序集。您可以使用文件签名工具(Signcode.exe)执行此操作,该工具将使用Authenticode签名对程序集进行签名。基本上,您只需使用signcode运行命令,Authenticode将对您的程序集进行签名。

如果查看GetSignerCertificate的文档,如果程序集未经过authenticode签名,您会看到null

signcode /spc myCertificate.spc /v myKey.pvk  myAssembly

这是基础知识,您可以在MSDN http://msdn.microsoft.com/en-US/library/9sh96ycy(v=vs.80).aspx上找到更多信息。