1.制作私钥文件
2.制作数字证书
3.对程序进行签名认证
大家知道吗?微软发布的具有数字签名的SP2才是正式版本,这是怎么一回事呢?
一、Windows的文件保护功能
在Windows 2000以前的Windows版本中,安装操作系统之外的软件,可能会覆盖掉一些共享的系统文件,例如动态链接库(*.dll文件)、可执行文件(*.exe),这样可能会导致程序运行不稳定、系统出现故障,这主要是由于所谓的DLL陷阱所导致。
为了彻底解决这一问题,在Windows 2000和Windows XP中,微软引入了“Windows文件保护”机制用来防止替换受到保护的系统文件,包括*.sys、*.dll、*.ocx、*.ttf、*.fon、*.exe等类型的文件,Windows文件保护在后台自动运行,可以保护Windows安装程序安装的所有文件。
Windows文件保护能够检测到其他程序要替换或移动受保护的系统文件的意图,那么它是依据什么来检测的呢?其实,Windows文件保护是通过检测文件的数字签名,以确定新文件的版本是否为正确的Microsoft版本,如果文件版本不正确,Windows文件保护会自动调用dllcache文件夹或Windows中存储的备份文件替换该文件,如果Windows文件保护无法定位相应的文件,那么会提示用户输入该位置或插入安装光盘。
二、认识数字签名
数字签名是允许用户验证的,如果某文件没有有效的数字签名,那么将无法确保该文件确实来自它所声明的来源,或者无法确保它在发行之后未被篡改过(可能由病毒篡改)。此时,比较安全的做法是,除非你确定该文件的创建者而且知道其内容,那么才能安全地打开,否则建议不要轻易打开该文件。凡是通过了微软数字签名的硬件或软件,其外包装上一般都会出现“为Microsoft Windows XP设计(Designed for Microsoft Windows XP)”的徽标。
在计算机上安装新软件时,系统文件和设备驱动程序文件有时会被未经过签名的或不兼容的版本覆盖,导致系统不稳定。随Windows XP一起提供的系统文件和设备驱动程序文件都有Microsoft数字签名,这表明这些文件都是原始的未更改过的系统文件,或者它们已被Microsoft同意可以用于Windows。在Windows 2000/XP中提供了“文件签名验证”工具(见图1),Windows 9x则提供了“系统文件检查器”,我们可以通过这些工具来检查系统文件的数字签名状态。
默认按照Makercer.exe生成的数字签名文件的颁发者是“RootAgency”,这样是不能直接通过认证的,如下是整理的相关资料
1. 什么是Root Agency数字证书?
Root Agency数字证书是makecert.exe生成的测试根证书,主要用于数字证书的签名测试,该类证书目前在系统是不受信的。
2.Root Agency数字证书对系统是否有危害?
根据Windos系统的设置,Root Agency所颁发的数字证书是不受信任的。但是在目前大部分ghost系统中把Root Agency数字证书设为了信任项,那就意味着病毒木马可以轻松的进行签证。
解决办法:
1)右击IE点击属性进入Internet选项;
2)点击内容选项卡选择发行商;
3)在受信任的根证书颁发机构以及中级证书颁发机构找到名为Root Agency的证书删除;
3.我可以用Root Agency数字证书对文件进行签名吗?
抱歉,由于Windos系统默认对其不受信以及与我国的电子签名法冲突所以文件即使被签名那也是无效的;
4.带有Root Agency数字证书签名的文件是否安全?
由于该类证书制作简单且仅需几秒钟,所以不确定性因素过多,到那时还是问一下杀毒软件把;
1.制作私钥文件:
一、"数字证书"制作软件MakeCert
makecert.exe是一个微软出品的用来制作"数字签名"的软件,是命令行界面,利用它可以轻松地做出属于自己的个人"数字签名",当然自己做出来的这个数字签名是不属于受信任的证书的,但这并不太影响使用。
二、CAB压缩软件包制作工具IEXPRESS
是MAKECAB.EXE的GUI界面程序,用来把程序所需文件压缩打包为CAB格式,便于传输,当然如果你的程序是一个独立的EXE文件时,可以不需要用这个工具打包,但考虑现在多数免费空间不支持EXE格式的文件上传,建议打包!类似的工具还有命令行界面的Cabarc.exe;
三、数字签名软件 Signcode
我们可以使用signcode.exe和自己的"数字证书"签署自己的软件,给软件加上数字签名,使其可以在网页中运行
大伙准备好了吗?下面就和我一起来属于自己的数字签名控件吧,Lets go......
第一步:制作"数字证书"
进入SignTool文件夹,在控制台运行如下指令:
makecert的命令如下:
makecert -sv "Talent.PVK" -n "CN=TalentCompany,O=FrankieWang" -ss My -r -b 08/20/2013 -e 08/20/2015
其中
-sv Talent.PVK 意思是生成一个私匙文件 Talent.PVK-n "CN=TalentCompany" 其中的"TalentCompany"就是签名中显示的证书所有人的名字,记住要改为你自己的或你想要的名字呀!
-ss My 指定生成后的证书保存在个人证书中 -r 意思是说证书是自己颁发给自己的,呵呵
-b 08/20/2013 指定证书的有效期起始日期,格式为 月/日/年,最低为1900年 -e 08/20/2015 指定证书的有效期终止日期,格式同上
至于其他命令暂时用不到,我也不多做介绍啦。
不需要填私匙密码吧?直接点"无"按钮就可以拉,如果你喜欢麻烦就输入密码,并记住它。好啦!已经在目录下生成了你的私匙文件Talent.PVK,但证书在哪里?别急,打开IE 的"Internet选项",切换到"内容"标签,看到"证书"按钮没?点它! 图中上面那个截止日期为08/20/2015的"TalentCompany"就是刚才自己生成的证书, 到IE的“Internet选项”中的“内容”中的“证书”中将TalentCompony导入到“受信任的根证书颁发机构”中,然后到“个人”中选中TalentCompony,选中导出, 按照默认生成Talent.cer证书文件
2.制作数字证书
前面已经生成了私钥文件PVK、数字认证文件cer(X.509),现在要通过如下命令来生成对应的Spc文件
cert2spc.exe Talent.cer Talent.spc
如此就完成了全部数字签名相关认证文件的生成;
3.对程序进行签名认证(每次进行数字签名的操作)
signcode.exe 依次选中之前生成的文件,即可
点击Browse,输入.CAB文件的存放地址(包含所取文件名),这里取TestCAB.CAB,并且要选中“Store files using Long File Name inside Package”。点击下一步。
在上图中选择:Don’t Save,即可生成dsoframe.CAB。
说明:CAB的文件名必须为8.3的格式,文件名不能太长,此制作过程可以先输入CAB包的文件名为:dsoFrame.CAB,制作完成后,再改成dsoFramer.CAB
第三步:为dsoframer.CAB签署数字签名
运行signcode.exe,选择dsoframer.CAB,如下图:
"签名选项窗体"中的"签名类型"选定"自定义(C)",如下图:
下一步,在“数字签名向导-签名证书”窗体中,点击"从文件中选择"按钮,选择上面第一步导出的证书文件dsoframer.cer,
再下一步的私匙选定第一步生成的dsoframer.pvk文件
!这样一个使用自己的"数字证书" 签署的具有"数字签名"可以在网页中运行的程序就做好啦!
第四步:当然就是把做好的程序嵌入到网页中,然后上传啦! 加入到网页中的代码如下:
<objectclassid="clsid:00460182-9E5E-11D5-B7C8-B8269041DD57"id="FramerControl1"
style="left: 0px; top: 0px; width: 100%; height:
16px"codebase="../DsoFramer/dsoFramer.CAB#V2,2,1,2"> </object>