创建代码签名:
1. 制作cab包
制作cab包之前首先要编写 .inf 文件,这个比较麻烦,可以参考现成的例子,如:
[version]
Signature="$CHICAGO$"
AdvancedINF=2.0
[Add.Code]
HebcaMailClient.ocx=HebcaMailClient.ocx
[HebcaMailClient.ocx]
file-win32-x86=thiscab
clsid={78D1D24A-C552-4402-95FA-E9CA2E8924F2}
FileVersion=1.0.1.1
RegisterServer=yes
制作cab包的工具很多,有CabMaker、cabArc、MakeCab等。我用的是CabMaker,挺好用的,打开后选择一个路径打包就可以了。
2. 获取代码签名证书
获取代码签名证书,可以从CA认证公司去申领。如果是个人测试,可以自己创建测试用的证书。可以用makecert 工具(dotnet框架下就有),也可以用windows2000、windows2003自带数字证书认证服务创建比较正规的测试证书。创建过程如下:
1) 在添加删除程序里面选择 添加/删除windows组件。
2) 选择 证书服务 然后安装即可。默认会安装证书申请的web页面。
3) 在本地输入:http://localhost/certsrv 。选择第二项然后按照提示申请代码证书即可。如果有usbkey的话,可以选择将证书颁发到usbkey上。
4) 选择管理工具-à证书颁发机构。然后将待定申请的代码签名证书选择颁发即可。
5) 在客户端需要将测试CA的根证书安装上。输入:http://ca serverIp/certsrv,选择第一项安装根证书即可。
3. 对cab包进行签名
这儿用signcode对cab包进行签名
在命令提示行中执行
signcode
之后进入signcodewizard:
step1.选择要签名的cab文件
step2.自定义
step3.从文件中选择 myNew.spc
step4.csp中的私钥/密钥容器:myNewKey
step5.sha1
step6.next
描述、时间戳如果有的话可以添上。
4. 验证所作的签名
可以使用chktrust工具对所作的签名进行验证,
在命令行中直接使用chktrust *.cab即可。如果出现预料结果则成功,否则,极有可能是证书有效期出现了问题。
5. 网页中测试:
在</head>后面添加:
<OBJECT classid="CLSID:78D1D24A-C552-4402-95FA-E9CA2E8924F2" CODEBASE="Package.cab#version=1,0,1.1" id="mc" VIEWASTEXT width="1" height="1">
</object>
进行测试即可。