Windows下生成测试数字证书
导语
我们在编写写驱动程序或者进行UWP开发时,开发阶段需要频繁的给程序进行签名然后测试,如果这时候每次都使用正式的公司证书来签名就很麻烦,这种情况下我们就可以生成一个自我签名的临时证书(根证书)来给我们的程序进行签名,只要在测试机器上安装上临时证书,那么我们的程序就可以通过操作系统的验证。如果你对数字证书和签名的原理很感兴趣,你可以查看我另一篇博客数字签名(点我)。
数字证书工具
Windows SDK中包含一系列的数字证书工具,如:
- markecert.exe 用于生成测试证书,该工具可以生成数字证书文件(.cer)和私钥文件(.pvk)
- pvk2pfx.exe 该工具可以将私钥文件(.pvk)转换成数字证书文件(.pfx)
- signtool.exe 该工具可以使用.pfx的数字证书文件对其他文件进行签名
.cer为只包含公钥的数字证书文件
.pfx为包含公钥和私钥的数字证书文件
这些工具在Windows SDK Bin目录下,笔者自己的目录如下:
C:\Program Files (x86)\Windows Kits\10\bin\x64
生成自我签名证书(根证书)
在SDK目录下打开命令行工具(管理员权限)输入指令:
makecert -r -n "CN=Tester" -sv "C:\Tester\Tester.pvk" "C:\Tester\Tester.cer"
-r表示这是一个自我签名的证书,-n参数为证书名称,-sv参数为保存私钥的文件,执行后提示输入私钥密码,因为我们生成的是测试证书,可以选择不需要密码,之后就可以在C盘Tester目录下看到证书文件,并且可以看到颁发者和颁发给的名称都是Tester
输入指令:
pvk2pfx -pvk "C:\Tester\Tester.pvk" -spc "C:\Tester\Tester.cer" -pfx "C:\Tester\Tester.pfx"
将私钥文件和证书文件合并成一个.pfx证书文件
对程序进行签名
输入指令:
signtool sign /v /fd SHA256 /f "C:\Tester\Tester.pfx" "C:\Tester\Tester.sys"
/v表示输出命令执行的信息,/fd SHA256表示对文件进行Hash而使用的算法,/f指定证书文件,这样我们的驱动程序就被签名了,在测试机上安装证书文件Tester.cer之后,我们的驱动程序就可以被系统加载
还没有人评论...