白话数字签名(番外篇)----签名EXE文件(上)

简介:

< DOCTYPE html PUBLIC -WCDTD XHTML StrictEN httpwwwworgTRxhtmlDTDxhtml-strictdtd>

转自:http://www.cnblogs.com/1-2-3/archive/2007/11/27/colloquialism-digital-certificate-part4.html
摘要

人家微软的软件都有数字签名,感觉好酷哦,我们写的软件也要弄个签名炫一炫。

带有签名的软件非常酷

在QQ的安装文件上右击,选“属性”,就可以看到QQ的数字签名了。
白话数字签名(番外篇)----签名EXE文件(上) - netcorner - netcorner的博客 
使用Process Explorer或SREng查看系统中正在运行的程序时,也可以验证程序是否有数字签名,如果我们的程序显示“Unable to verify”,那显得多不专业呀。
白话数字签名(番外篇)----签名EXE文件(上) - netcorner - netcorner的博客 

给自己的程序加上签名

上图中的那个MathLover121.exe是我在上学的时候用C++ Builder写的一个小软件,不用说,它肯定是没有签名的了。下面就来演示一下如何使用微软的签名工具SignTool签名这个EXE文件。要进行签名,首先要有数字证书才行。如果你的公司已经申请了数字证书,那就再好不过了;但是鉴于很多朋友手中没有数字证书,这里就先介绍一下如何在CA365上申请一个免费的数字证书。

申请免费的数字证书

Step1: 登录www.ca365.com,在“免费证书”栏中点击“用表格申请证书”链接。
白话数字签名(番外篇)----签名EXE文件(上) - netcorner - netcorner的博客 

Step2: 填表,基本上可以瞎填的,没人管。
白话数字签名(番外篇)----签名EXE文件(上) - netcorner - netcorner的博客

Step3: 在上一步按“提交”按钮后稍等一会儿,会自动进入下载证书的页面,点击“下载并安装证书”链接下载并保存证书,默认的文件名是“NewCert.der”。
白话数字签名(番外篇)----签名EXE文件(上) - netcorner - netcorner的博客 

Step4: 安装证书。
在“NewCert.der”文件上右击,选择“安装证书”即可。
白话数字签名(番外篇)----签名EXE文件(上) - netcorner - netcorner的博客 

接下来就可以开始签名EXE文件了。

使用SignTool签名EXE文件

Step1: 通过“开始菜单|程序|Microsoft Visual Studio 2005|Visual Studio Tools|Visual Studio 2005 命令提示”打开命令行窗体。 Step2: 执行“signtool signwizard”。 白话数字签名(番外篇)----签名EXE文件(上) - netcorner - netcorner的博客 Step3:在“数字签名向导”中点击下一步,来到“文件选择”页,选择需要签名的文件。注意如果文件放在了桌面下会提示“指定的文件不存在或为只读文件”的错误信息,可能是文件夹权限的问题。 白话数字签名(番外篇)----签名EXE文件(上) - netcorner - netcorner的博客 Step4: 点击“下一步”,来到“签名选项”页,选择“典型”即可。 Step5: 点击“下一步”,来到“签名证书”页,点击“从存储区选择...”按钮,然后选择我们刚刚申请并安装的那个证书。 白话数字签名(番外篇)----签名EXE文件(上) - netcorner - netcorner的博客 Step6:(可选)点击下一步,在“数据描述”页可以填写一些描述信息。 Step7: (可选)点击下一步,在“给数据盖时间戳”页,填写时间戳服务的URL。这里有两个免费的时间戳服务器URL:http://timestamp.verisign.com/scripts/timstamp.dll
http://timestamp.wosign.com/timestamp 白话数字签名(番外篇)----签名EXE文件(上) - netcorner - netcorner的博客 Step8: 点击“下一步”,在“正在完成数字签名向导”页最后浏览一下所有的设置,确认无误后点击“完成”按钮开始签名。 Step9: 在弹出的“正在用您的专用交换密钥签名数据”对话框上按“确定”按钮。 白话数字签名(番外篇)----签名EXE文件(上) - netcorner - netcorner的博客 Step10: 看到“数字签名向导已成功完成”信息,说明签名成功了。 白话数字签名(番外篇)----签名EXE文件(上) - netcorner - netcorner的博客 
现在,在Windows的资源管理器中右击MathLover121.exe选“属性”,就可以看到多了一个“数字签名”页。点击“详细信息”按钮可以查看证书的详细信息。
白话数字签名(番外篇)----签名EXE文件(上) - netcorner - netcorner的博客 

在Process Explorer里也可以验证签名了。
白话数字签名(番外篇)----签名EXE文件(上) - netcorner - netcorner的博客 

不过如果把这个已签了名的MathLover121.exe复制到我的同事的计算机上用Process Explorer验证签名,会仍然显示“Unable to verify” _| ̄|○ (好像有砖头飞来的声音,我闪先~~),这是因为 ca365的根证书默认并没有安装在Windows系统的“受信任根证书颁发机构”列表中。在我的机器上能验证成功是因为我事先已经导入了CA365的根证书。关于数字证书和根证书的关系可以看我的白话数字签名(2)
可以在“开始菜单 | 运行...”里执行“certmgr.msc”查看“受信任根证书颁发机构”列表。
白话数字签名(番外篇)----签名EXE文件(上) - netcorner - netcorner的博客 

所以如果你希望Windows信任你就乖乖的向这个列表中的公司交钱吧,例如QQ的安装文件就是使用的 VeriSign 的代码签名证书。

还有一个奇怪的问题...

但是如果我们在“C:\Program Files\Internet Explorer\IEXPLORE.EXE”上面右击,再点击“属性”,可以看到并没有显示数字签名页,但是在Process Explorer中却可以成功验证签名,这是怎么回事呢?呵呵,先卖个关子,下篇再讲 :)

白话数字签名(番外篇)----签名EXE文件(上) - netcorner - netcorner的博客

本文转自 netcorner 博客园博客,原文链接:  http://www.cnblogs.com/netcorner/archive/2008/03/01/2912173.html,如需转载请自行联系原作者


相关文章
|
8月前
|
算法 安全 Linux
浅浅学习一下OpenSSL
浅浅学习一下OpenSSL
191 0
|
编译器 C语言
【C语言航路外传】一招解决visual studio部分函数不安全问题
【C语言航路外传】一招解决visual studio部分函数不安全问题
96 0
|
4月前
|
存储 安全 算法
RSA在手,安全我有!Python加密解密技术,让你的数据密码坚不可摧
【9月更文挑战第11天】在数字化时代,信息安全至关重要。传统的加密方法已难以应对日益复杂的网络攻击。RSA加密算法凭借其强大的安全性和广泛的应用场景,成为保护敏感数据的首选。本文介绍RSA的基本原理及在Python中的实现方法,并探讨其优势与挑战。通过使用PyCryptodome库,我们展示了RSA加密解密的完整流程,帮助读者理解如何利用RSA为数据提供安全保障。
153 5
|
5月前
|
Ruby
神秘编程世界惊现文件奥秘!Ruby 中的文件 I/O 操作究竟隐藏着怎样的秘密宝藏?快来探索!
【8月更文挑战第31天】在 Ruby 编程中,文件 I/O 操作是不可或缺的技能,它使我们能够读取、写入和处理文件数据,为各种应用提供强大支持。本文通过五个案例介绍如何使用 Ruby 进行文件操作:读取文件内容、写入文件内容、追加内容到文件、逐行读取文件以及处理多个文件。无论是在单个文件上执行基本操作还是批量处理多个文件,Ruby 均提供了简洁高效的解决方案,帮助我们轻松应对各种需求。
40 0
|
8月前
|
安全 网络安全 数据安全/隐私保护
什么是代码签名,又有什么用处呢?
代码签名是通过数字证书验证软件来源及完整性的网络安全措施,确保用户下载的软件未被篡改或包含恶意软件。它验证开发者身份,保护代码不被恶意修改,减少安装时的安全警告,维护品牌形象,并符合操作系统及行业法规要求。使用代码签名如JoySSL,能增强用户信任,保障软件安全,是现代开发流程的关键环节。
88 0
|
8月前
|
开发框架 Java .NET
救命!C程序运行原理的秘密居然被我发现了
救命!C程序运行原理的秘密居然被我发现了
48 0
|
运维 安全 Shell
金鱼哥戏说RHCSA认证:十六、文件查找、传输和打包压缩
第十六章 文件查找、传输和打包压缩
143 0
金鱼哥戏说RHCSA认证:十六、文件查找、传输和打包压缩
|
Java 数据安全/隐私保护
教你一招破解字节码加密
字节码加密的需求 java的字节码是可以反编译的,所以很多时候,做商用产品的时候,防止别人看你的核心代码是一个必要手段,字节码加密的需求就诞生了,本质就是防止别人反编译看代码。
2634 0
|
tengine 安全 算法
RSA算法理论学习解惑――复制粘贴RSA私钥导致tengine出错深入解析
tengine的代码中使用了RSA_check_key函数进行RSA私钥格式正确性检查,有一次加载私钥测试时tengine reload失败。案例的看点是RSA格式私钥文件中的私钥指数d在tengine实际的加解密计算过程中并没有用到,至于为什么请细看下文。
4129 0
|
算法 数据安全/隐私保护 Windows
复习做UWP时涉及到的几种加密签名相关
原文:复习做UWP时涉及到的几种加密签名相关 本人菜鸟一枚,大学里凭兴趣学了一点WP的皮毛,后来又幸运(或者不幸)的进了一家专注于Windows生态的公司做了一段时间的UWP。在博客园写点自己遇到的东西,作为分享,也作为自己的备忘,如果有错误的地方,或者可以提升B格的地方,希望园子里的大神们不吝赐教。
1101 0