对于一个私人项目,我为USB大容量存储设备创建了一个自定义驱动程序。在我的测试环境中(禁用完整性检查并启用了测试签名),一切正常。
现在,我已经部署了具有基本Windows 10安装的虚拟机。
使用OpenSSL,我创建了一个自定义的证书颁发机构和一个由先前创建的ca签名的代码签名证书。
Visual Studio使用“签名模式:测试符号”选项来愉快地签名我的驱动程序。
我将驱动程序复制到VM并安装了ca证书。根据“数字签名”-选项卡,在驱动程序的文件属性中,签名存在且受信任。
当我尝试使用OSR Loader注册驱动程序时,出现一条错误消息,提示“ Windows无法验证此文件的数字签名”。
我的目标是能够使用自签名的ca和证书在“非开发”环境中安装和运行驱动程序。
注意:我了解我应该购买一个“官方”代码签名证书来签署我的驱动程序,但是该项目不会产生任何收益,只会由我的很多朋友使用。
我创建了一个非常基本的驱动程序,该驱动程序将使用“ DbgPrint”来打印“ DriverEntry被调用”和“ DriverUnload被调用”。
该驱动程序仅用作快速测试可能的解决方案的参考。
我如何创建证书:
openssl genrsa -out ca.key 4096
openssl req -new -x509 -days 1826 -key ca.key -out ca.crt
openssl genrsa -out codesign.key 2048
openssl req -new -key codesign.key -reqexts v3_req -out codesign.csr
openssl x509 -req -days 1826 -in codesign.csr -CA ca.crt -CAkey ca.key -extfile v3.cfg -set_serial 01 -out codesign.crt
openssl pkcs12 -export -out codesign.pfx -inkey codesign.key -in codesign.crt
v3.cfg:https://pastebin.com/GWF9YVBa
更新: 我尝试使用“生产标志”选项,但是我的证书不能用于签署非测试标志。
下一步:我切换回测试符号,并使用以下命令在虚拟机上启用测试签名:
bcdedit.exe -set TESTSIGNING ON
,但仍然没有成功。 :(