数字证书,真是个神奇的东西,可以保证软件不被修改,可以表明文件的发布日期,最重要的,可以很大程度的减少杀毒软件的误报,当然,这就要使用可信任的机构颁发的证书了。
现在要说的不是申请证书,而是如何制作自己的证书。
1.安装windows sdk
生成证书和签名工具都包含在里面,Visual Studio应该都有自带了,以下内容中使用的工具都可以在C:\Program Files\Microsoft SDKs\Windows\v7.0A\Bin里面找到
2.创建 X.509 证书
MSDN对Makecert.exe(证书创建工具)的介绍:
证书创建工具生成仅用于测试目的的 X.509 证书。
它创建用于数字签名的公钥和私钥对,并将其存储在证书文件中。
此工具还将密钥对与指定发行者的名称相关联,并创建一个 X.509 证书,该证书将用户指定的名称绑定到密钥对的公共部分。
使用这个命令行创建证书:
Makecert -sv abc.pvk -r -n “CN=XXX公司” abc.cer
-sv abc.pvk创建一个密钥文件,来保存私钥,创建时需要输入一个密码。
3.创建发行者证书
MSDN对Cert2spc.exe(软件发行者证书测试工具)的介绍:
发行者证书测试工具通过一个或多个 X.509 证书创建发行者证书 (SPC)。
Cert2spc.exe 仅用于测试目的。
可以从证书颁发机构(如 VeriSign 或 Thawte)获得有效的 SPC。
使用下面的命令行创建发行者证书:
Cert2spc abc.cer abc.spc
4.导出pfx证书文件
使用pvk2pfx.exe工具从pvk文件中导出pfx文件:
pvk2pfx -pvk abc.pvk -pi mypassword -spc abc.spc -pfx abc.pfx -f
把"mypassword "密码替换为第二步时输入的密码
5.对自己的软件签名
使用signtool.exe进行签名,MSDN对SignTool.exe(签名工具)的介绍:
签名工具是一个命令行工具,用于对文件进行数字签名,验证文件和时间戳文件中的签名。
如果要对abc.exe进行签名:
signtool sign /f abc.pfx /p mypassword abc.exe
把其中的密码替换为自己的密码。
6.对自己的软件加盖时间戳
可以使用WoSign提供的时间戳服务:http://timestamp.wosign.com/timestamp
signtool timestamp /t http://timestamp.wosign.com/timestamp abc.exe
如果上面的步骤都正确,那么结果就是这样的:
签名之后,自己的软件瞬间就变的专业了有木有!
当然,这样的签名只是自慰罢了,没有什么实际用途,真正有用的证书还是要去专业机构申请的。