徐磊的博客

北京的201个蓝天

原创 Windows Vista 产品兼容性讲座 - 对可执行文件签名 Code signing Procedure 收藏

新一篇: Windows Vista 产品兼容性讲座 Webcasts | 旧一篇: Windows Vista 产品兼容性讲座 - 课程资料

从Windows 2000开始,微软就开始在操作系统的模块上推行数字签名,最早是在驱动程序中推行,不过一直都没有特别强调这一点。从Vista开始,微软在x64位的系统上强制推行数字签名,没有经过WHDL和RDS认证并签名的驱动程序将无法在Vista x64版本上加载。对于普通的应用程序来说,微软也开始推行数字签名,虽然没有经过签名的应用程序仍然可以在Vista上运行,但是如果ISV想通过微软的logo认证,那么就必须对所有的可执行文件进行数字签名。在后续的Vista版本上,微软会逐步加强对数字签名的要求,最终要求所有的应用程序必须经过签名才能在Windows系统上运行。当然,这是长远目标,其中还有很长的路要走。

对于ISV来说,我们现在就应该做好数字签名的准备。我在这里就用一个简单的例子来说明一下大概的过程,如果实际操作的话,会有不同的要求。
第一步:你需要自己自己生成一个证书,并把其中的私钥导出备用。
第二步:把生成的证书提交给第三方的认证机构,比如:Verisign,Thawte这些比较大的公司都提供相应的服务;提交的同时,这些机构会需要你提供一些资料以便认证你的身份。这个很好理解,因为他们需要在以后你使用证书的过程中对你的身份负责,所有他们必须首先认证你的身份。
第三步:这些机构会给你提供一个Digital ID,对你的身份信息提供认证。一般会用邮件的方式通知你。
第四步:使用工具对你自己的可执行文件进行签名。
签名完成以后就可以用证书发布你的产品了,那么当程序在Vista上运行的时候就会被认为是可以被识别的应用程序。
以下是一个具体的例子:
1)首先生成证书:
Makecert –sv dotnetchina.pvk –n “CN=dotnetchina.com.cn” –b 01/01/2006 –e 01/01/2008 dotnetchina.cert
说明:
-sv dotnetchina.pvk 导出私钥到dotnetchina.pvk这个文件中,以便我们在后面签名的时候使用
-n “CN=dotnetchina.com.cn” 指定这个证书的名字
-b 01/01/2006 指定这个证书的开始日期为01/01/2006
-e 01/01/2006 指定这个这个证书的结束日期为01/01/2008
Dotnetchina.cert 把生成的证书存储在这个文件中,其中包括了公钥\私钥对
2) 现在你就可以提交证书到前面提到的这些机构进行认证了
3) 认证完成,我们用获得证书对可执行文件进行签名
用下面的命令把证书转换为SPC (Software Publishing Certificate 软件发行证书)
               
 Cert2spc dotnetchina.cert dotnetchina.spc 
最后,用下面的命令对exe进行签名
               
Signtool signwizard 
这个命令会打开以下的图形界面,引导你完成签名的过程:

Figure:使用signtool打开签名引导程序

Figure:选择要签名的文件

Figure:选择定制的方式,普通的签名方式是使用在本地计算机上安装的证书进行,因为我们签名只生成了文件证书,没有导入到本地计算机,所以不能使用这个选项。

Figure:选择生成的软件发布证书文件

Figure:选择刚才导出的私钥文件,并提供密码

Figure:选择加密算法

Figure:选择其他选项以后,最终签名完成
被签名的可执行文件可以在属性中找到“数字签名”选项卡,其中会有签名的列表。

Figure:被签名的文件属性

Figure:对比一下没有签名的属性卡
注意,只有被第三方认证的证书签名,并提供完成的认证信息才可以被Vista认为是可识别的应用程序,并显示灰色的警告窗口,上面的过程仅仅是例子。

一些资源供大家参考:
Verisign: http://www.verisign.com
Thawte: http://www.thawte.com/
这里所使用的工具大家都可以在Windows Server 2003 R2 Platform SDK中找到,可以从以下地址下载完整版:
http://www.microsoft.com/downloads/details.aspx?FamilyId=484269E2-3B89-47E3-8EB7-1F2BE6D7123A&displaylang=en

 
 
 
 
 

发表于 @ 2006年12月14日 12:31:00|评论(loading...)|编辑

新一篇: Windows Vista 产品兼容性讲座 Webcasts | 旧一篇: Windows Vista 产品兼容性讲座 - 课程资料

评论

#htqx 发表于2006-12-15 13:33:17  IP: 59.52.19.*
要到外国认证? ms傻了吧。
#netcat 发表于2006-12-31 18:21:40  IP: 222.70.181.*

http://www.openssl.com.cn
这个网站是专业交流数字证书签名应用的。
#wotrust1 发表于2007-01-19 09:39:26  IP:
不用到国外认证! 联系深圳WoTrust即可:www.wotrust.com !
如果只是要签名可执行文件,推荐购买WoTrust代码签名证书:1288元/年,款到10分钟颁发!
如果要做微软徽标认证,则需要购买VeriSign代码签名证书,WoTrust实力代理,1-3天颁发,4980元/年!
发表评论  


当前用户设置只有注册用户才能发表评论。如果你没有登录,请点击登录
Csdn Blog version 3.1a
Copyright © ups216