代码签名是对软件进行标识的一个过程,它通过对软件增加了发布商的信息来检查软件在发布后是否被修改或受病毒影响。在软件出售前进行签名已经成为了行业范围的专业实践。随着用户的安全意识的提高,现在越来越多的用户限制下载未签名的软件,因此作为专业的软件公司,在软件出售前进行签名已经成为必不可少的一步。
要进行代码签名,需要以下准备:
1)代码签名证书和密码;
2)代码签名工具;
3)时间戳服务器的URL地址;
代码签名工具
代码签名工具, 微软提供了两套代码签名工具,
1)signcode.exe, 从1998年开始使用,随.NET Framework SDK发布。
signcode.exe 代码签名工具
makecert.exe 创建代码签名证书
cert2spc.exe 将代码签名证书转化为软件发布者证书格式
2)signtool.exe,随visualstudio 2005及其以后的版本发布。
signtool.exe 代码签名工具
makecert.exe 创建代码签名证书
cert2spc.exe 将代码签名证书转化为软件发布者证书格式
pvk2pfx.exe(pvkimprt.exe) 将私有的密匙和软件发布者证书合并为pfx文件,此文件将被signtool.exe使用
上面2中工具的不同是signcode.exe需要输入私有密匙和软件发布者证书(pvk和spc文件),signtool.exe只需要输入由pvk和spc合并产生的一个个人信息交互文件(pfx)。
获得代码签名证书
代码签名证书,你需要向可信赖的证书颁发机构购买代码签名证书和密码,例如你可以向以下的证书机构WoSign购买。
时间戳服务器,你可以选择下列之一,
- http://timestamp.wosign.com/timestamp
- http://timestamp.wosign.com/rfc3161
1)使用signcode.exe,如下:
signcode.exe -t <timestamp URL> -spc mycert.spc -v mykey.pvk "<file to be signed>"进行代码签名的文件可以是.exe, .dll, .ocx 或者是其他的可执行文件。
2)使用signtool.exe,如下:
现在,就可以使用WDK的 SignTool 签名你的文件了,点这里下载 Signtool签名工具。签名命令行为:
XP,Win7用户 signtool sign /v /s my /t http://timestamp.wosign.com/timestamp test.cab
Win7用户 signtool sign /v /s my /tr http://timestamp.wosign.com/rfc3161 test.cab
其中:
(1) /v: 显示详细的签名结果
(2) /s my: 加载个人证书库中的代码签名证书。请确保只有一个WoSign颁发的微软代码签名证书;
(3) /t,/tr: 为代码加上WoSign免费时间戳,确保签名后的代码永不过期;
(4) test.cab: 就是您要签名的Windows文件,如:.cab, .dll, .exe 等文件
以下是使用signtool.exe签名的一个实例: