Windows驱动开发--测试证书签名

微软从Vista开始64位系统加载内核驱动要强制签名,虽然可以重启关闭相关选项,但是还是会出现很多问题,这里我自己测试驱动程序,目前也不想买证书,因此就尝试自己创建一个测试的签名,用来测试自己开发的驱动用。

参考链接:
https://www.mobibrw.com/2014/1404

一、测试机软件安装

测试机系统: win7 64位;

由于需要用到一些命令工具,因此需要先安装这些工具,主要包含:
MakeCert, CertMgr, Signtool这3个程序。

我在搭环境时,直接在测试机上安装了一个VS 2017(版本无所谓,别太旧就行), vs里是包含这些工具的,在安装VS时选择C++开发的工具包就行。

其他方式,Plateform SDK, .netFramework SDK里面也都有这些工具。

二、生成自己的证书并对驱动程序进行签名

在完成上述安装后,用admin权限打开Developer Command Prompt for VS 2017.
cmdforvs.jpg

1.打开系统的testsigning模式,使得非权威CA发放的签名可以使用

1
bcdedit /set testsigning on

成功后在桌面右下角可见测试标签:
testmark.png
没有的话重启一些看看。

2.做一个签名证书出来。

先进入D盘,或者任意目录都行,默认也行

1
MakeCert –r –pe –ss PrivateCertStore –n CN=www.rg.com(test) rg.cer

成功后会生成相应的rg.cer文件在当前目录

3.把证书加进本机信任根CA中去。

1
CertMgr -add rg.cer -s -r localMachine root

4.给驱动签名。

1
Signtool sign /v /s PrivateCertStore /n www.rg.com(test) /t http://timestamp.verisign.com/scripts/timestamp.dll myDriver.sys

这样这个驱动就完成签名了,可以在测试机上正常安装执行了。

说明

  1. 上面指令中 myDriver.sys是要签名的驱动;
  2. www.rg.com, rg.cert名称可以随便换;
  3. 前面的主机配置过程可能需要reboot,最后一步签名不需要;
  4. 还是就是参考链接里说testsigning打开可能会影响DRM,目前不关注这个,没管。