白话数字签名
来源:互联网 发布:微信转发赚钱平台源码 编辑:程序博客网 时间:2024/04/28 10:34
人家微软的软件都有数字签名,感觉好酷哦,我们写的软件也要弄个签名炫一炫。
下面就来演示一下如何使用微软的签名工具SignTool签名这个EXE文件。要进行签名,首先要有数字证书才行。如果你的公司已经申请了数字证书,那就再好不过了;但是鉴于很多朋友手中没有数字证书,这里就先介绍一下如何在CA365上申请一个免费的数字证书。
申请免费的数字证书
Step1: 登录www.ca365.com,在“免费证书”栏中点击“用表格申请证书”链接。
Step2: 填表,基本上可以瞎填的,没人管。
Step3: 在上一步按“提交”按钮后稍等一会儿,会自动进入下载证书的页面,点击“下载并安装证书”链接下载并保存证书,默认的文件名是“NewCert.der”。
Step4: 安装证书。
在“NewCert.der”文件上右击,选择“安装证书”即可。
接下来就可以开始签名EXE文件了。
使用SignTool签名EXE文件
http://timestamp.wosign.com/timestampStep8: 点击“下一步”,在“正在完成数字签名向导”页最后浏览一下所有的设置,确认无误后点击“完成”按钮开始签名。Step9: 在弹出的“正在用您的专用交换密钥签名数据”对话框上按“确定”按钮。Step10: 看到“数字签名向导已成功完成”信息,说明签名成功了。
现在,在Windows的资源管理器中右击MathLover121.exe选“属性”,就可以看到多了一个“数字签名”页。点击“详细信息”按钮可以查看证书的详细信息。
在Process Explorer里也可以验证签名了。
不过如果把这个已签了名的MathLover121.exe复制到我的同事的计算机上用Process Explorer验证签名,会仍然显示“Unable to verify” _| ̄|○ (好像有砖头飞来的声音,我闪先~~),这是因为 ca365的根证书默认并没有安装在Windows系统的“受信任根证书颁发机构”列表中。在我的机器上能验证成功是因为我事先已经导入了CA365的根证书。关于数字证书和根证书的关系可以看我的白话数字签名(2)。
可以在“开始菜单 | 运行...”里执行“certmgr.msc”查看“受信任根证书颁发机构”列表。
所以如果你希望Windows信任你就乖乖的向这个列表中的公司交钱吧,例如QQ的安装文件就是使用的 VeriSign 的代码签名证书。
还有一个奇怪的问题...
但是如果我们在“C:\Program Files\Internet Explorer\IEXPLORE.EXE”上面右击,再点击“属性”,可以看到并没有显示数字签名页,但是在Process Explorer中却可以成功验证签名,这是怎么回事呢?呵呵,先卖个关子,下篇再讲 :)
如果我们在IEXPLORE.EXE上面右击,再点击“属性”,可以看到并没有显示数字签名页,但是在Process Explorer中却可以成功验证签名,这是怎么回事呢?
签名EXE文件的两种方法
上篇写到如果我们在IEXPLORE.EXE上面右击,再点击“属性”,可以看到并没有显示数字签名页,但是在Process Explorer中却可以成功验证签名,这是怎么回事呢?这是因为有两种签名EXE文件的方法:1. 将签名数据嵌入到EXE文件内部,就是上篇里介绍的那种方法。2. 将签名数据存放到一个 .cat 文件中,Windows绝大多数程序和驱动都是使用的这种方法,所以在文件属性里看不到签名信息,却可以使用Process Explorer成功验证签名。下面就来介绍一下这种签名方法。
使用安全编录(.cat)文件签名EXE文件
Step3: 下载这个MakeCat.rar,解压缩,得到MakeCat.exe,将它复制到“C:\SignDemo”。
注 MakeCat.exe是随3.0的SDK发布的,所以为了方便我把它上传到了这里。
Step4: 打开命令行,使用“makecat -v 123soft.cdf”命令生成“123soft.cat”文件。Step5: 打开命令行,执行“signtool signwizard”命令,打开签名向导,使用和上篇同样的方法签名“123soft.cat”文件。
Step6: 测试123soft.cat文件里面是否已包含了MathLover121.exe的数字签名。方法是使用“signtool verify -v -pa -c 123soft.cat mathlover121.exe”命令。
Step7: 使用自动模式(即不显式给出CAT文件)验证签名,之所以会失败是因为我们还没有将123soft.cat导入操作系统的安全编录数据库。Step8: 将123soft.cat添加到操作系统的安全编录数据库。在命令行执行“signtool catdb -v 123soft.cat”命令即可。Step9: 重做Step7的测试,发现可以成功验证签名了。Step10: 在Process Explorer里面验证MathLover121.exe的签名,发现可以验证成功。注意 在上面Step2中,123soft.cdf中的文件列表一定要写成“<hash>MathLover=MathLover121.exe”,如果写成“MathLover=MathLover121.exe”也可以成功生成123soft.cat文件,但是验证签名会失败,提示的错误信息为“找不到指定文件”。我猜想这是因为签名验证程序是通过MathLover121.exe的散列值来查找签名数据的,而只有通过<hash>标记才能在生成CAT文件的时候使用MathLover121.exe的散列值替换掉“MathLover”这个名称。关于摘要算法可以参考我的白话数字签名(2)。
签名MP3
转载自:http://www.cnblogs.com/1-2-3/archive/2007/11/27/colloquialism-digital-certificate-part4.html
http://www.cnblogs.com/1-2-3/archive/2007/12/03/975549.html
- 白话数字签名
- 白话数字签名
- 白话数字签名
- 白话数字签名全篇
- 白话数字签名(3)——Web程序中的数字签名
- 白话数字签名(3)—Web程序中的数字签名
- 白话数字签名(3)——Web程序中的数字签名
- 白话数字签名(3)——Web程序中的数字签名
- 白话数字签名(3)——Web程序中的数字签名
- 白话数字签名——软件&设备
- 白话数字签名(2)——软件&设备
- 白话数字签名(1)——基本原理(新!)
- 白话数字签名(1)——基本原理
- 白话数字签名(1)——基本原理(新!)
- 白话数字签名(2)—软件&设备
- 白话数字签名(1)——基本原理(新!)
- 白话数字签名(1)——基本原理
- 白话数字签名(2)——软件&设备
- 操作 sqlite数据库 Warning: there is at least one open result set around after performing [FMDatabaseQueue
- 目标板挂载NFS时 需要nolock参数
- html 用js框架
- 判断网络连接并跳到设置界面
- 高性能js模板引擎(artTemplate )
- 白话数字签名
- 为什么支持向量机和感知机等问题都有原始和对偶问题之分
- 通过命令创建oracle11G数据库
- coco2dx编译so文件出错解决方法
- 杭电3549 Flow Problem(最大流Dinic+前向星模板)
- C#数字图像处理<二>
- 判断gps并跳转到设置界面
- sqlite 出现 unrecognized token: "xxxx"
- C#:Convert.ToInt32(String)和Int32.Parse(String)的区别