给程序集添加数字签名和验证程序集的数据签名

在VS安装后发现路径**VC7/Common7/Tools/Bin/下有许多小工具。

1。Makecert.exe ---证书创建工具
2。Cert2Spc.exe ---发行者证书测试工具
3。Signtool.exe ---文件签名工具
4。chktrust.exe 检查签署证书后的ocx是否正确

 

建立自己的根证书:
makecert -sk myPK -ss myName -n "CN=SharpSoft" -r c:/my.cer
sk-表示主题的密钥容器位置,ss-主题的证书存储名称, n-证书颁发对象,r-证书存储位置;
如果你需要导出私钥文件,请不要使用sk,而换作s,

eg:makecert -ss myName -n "CN=SharpSoft" -sv c:/my.pvk -r c:/my.cer
建立自根跟证书授权的子证书:
makecert -sk "myPK" -is myName -n "CN=SharpSoft" -$ commercial -ic c:/my.cer c:/31.cer
sk-表示主题的密钥容器位置,is-颁发者的证书存储名称, n-证书颁发对象,ic-颁发者的证书存储位置,-$-授权范围(用于代码签名);


使用Cert2Spc生成spc发行者证书(可选):
cert2spc c:/31.cer c:/31.spc


使用signtool为你的程序,库或cab包签名:
双击signtool,或在控制台键入signtool signwizard,启动签名向导。在第三步选择“自定义选项”,第四步选择“从文件选择”选择31.spc或31.cer,第五步选择“CSP中的私钥”,在密钥容器中选择我们定义的myPK,其他步骤默认即可,如果想添加时间戳,请在时间戳服务器地址上键入:(免费时间戳认证)http: //timestamp.verisign.com/scripts/timstamp.dll
完成后,观察你所签名的文件属性,应该已经添加数字签名项。

 

好了,以上就给一个程序集添加了你自己的数字签名。

如果你的程序部署以后,需要在你的主程序中判断程序集的数字签名的时候,该怎么办呢?

.Net的类库中提供了System.Security.Cryptography.X509Certificates命名空间,里面有很多类可以操作数字签名。

其中最常用的就是X509Certificate2和X509Certificate2UI了,他们分别是获取数字签名的信息和用对话框显示这些信息。

注意,X509Certificate2UI类在system.security.dll文件中,需要添加引用这个文件。

简单的示例代码如下:

  1.             string Certificate = @"d:/ClassLibrary1.dll";
  2.             X509Certificate2 cert = new X509Certificate2(Certificate);
  3.             Console.WriteLine(cert.Subject);
  4.             Console.WriteLine(cert.SerialNumber);
  5.             X509Certificate2UI.DisplayCertificate(cert);

 

你可能感兴趣的:(c,UI,String,存储,工具,测试工具)