Windows不信任自签名驱动程序(使用自定义自签名CA)

时间:2019-07-04 11:26:49

标签: c++ windows certificate driver signing

对于一个私人项目,我为USB大容量存储设备创建了一个自定义驱动程序。在我的测试环境中(禁用完整性检查并启用了测试签名),一切正常。

现在,我已经部署了具有基本Windows 10安装的虚拟机。

使用OpenSSL,我创建了一个自定义的证书颁发机构和一个由先前创建的ca签名的代码签名证书。

Visual Studio使用“签名模式:测试符号”选项来愉快地签名我的驱动程序。

我将驱动程序复制到VM并安装了ca证书。根据“数字签名”-选项卡,在驱动程序的文件属性中,签名存在且受信任。

当我尝试使用OSR Loader注册驱动程序时,出现一条错误消息,提示“ Windows无法验证此文件的数字签名”。

我的目标是能够使用自签名的ca和证书在“非开发”环境中安装和运行驱动程序。

注意:我了解我应该购买一个“官方”代码签名证书来签署我的驱动程序,但是该项目不会产生任何收益,只会由我的很多朋友使用。

我创建了一个非常基本的驱动程序,该驱动程序将使用“ DbgPrint”来打印“ DriverEntry被调用”和“ DriverUnload被调用”。

该驱动程序仅用作快速测试可能的解决方案的参考。

Image: My Visual Studio Settings for signing

Image: Digital Signatures (My CA is named "Driver", terrible I know)

我如何创建证书:

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,但仍然没有成功。 :(

enter image description here

0 个答案:

没有答案