代码签名证书是通过对代码的数字签名来标识软件来源以及软件开发者的真实身份,保证代码在签名之后不被恶意篡改。使用户在下载已经签名的代码时,能够有效的验证该代码的可信度;同时证书又分为个人型(iv)、企业型(ov)和企业型(ev)。
代码签名证书的验证流程:
1)从CA机构授权数字证书,然后借助代码签名工具将代码进行MD5或者SHA计算产生哈希值,在用代码签名证书的私钥对生成的哈希值进行签名。
2)用户在下载软件包时,运行环境(浏览器或者操作系统)会检验软件发布者的代码签名证书的有效性。
3)最后用户在使用前会将对含有公钥密码的签名进行运算产生一个哈希值,并使用同样的算法对代码进行运算产生一个哈希值,如果这2个哈希值匹配,则验证通过。
4)整个过程对用户完全透明,用户将可以看到软件发布者提示信息,并可以选择是否信任该软件发布者。在选择信任软件发布者之后,运行所有该软件发布者签名的程序时将可以不再收到任何提示信息。
不同类型的代码签名证书,支持的签名代码有所不同,这里列出部分支持的代码签名;
1)Windows.sys, .cat, .exe, .dll, .cab, .ocx( ActiveX )等文件数字签名。
2)XML 文件数字签名。
3)Adobe AIR的打包文件 .air,.airi等文件数字签名。
4)Silverlight应用加密签名(.xap)。
5).js文件(JavaScript)数字签名。
6)微软Office VBA宏数字签名。
7)火狐浏览器插件.XPI文件数字签名。
8)Apple Mac 应用程序数字签名。