linux内核签名认证机制,Linux内核模块在安全启动模式下的签名和安装

在安全启动模式下,是不能加载未签名或由未注册的密钥签名的内核模块的,所以本文介绍了如何签名内核模块,并安装到Linux内核中。

本文参考了itpropmn07的回答的第一步和第二步。

以RTL8821CE驱动为例,在得到8821ce.ko后,按照下面的命令生成私钥和公钥。wifi.key是私钥文件的名称,wifi.der是公钥文件的名称,wifi drivers是证书一般名称(CN)。

openssl req -new -x509 -newkey rsa:2048 -keyout wifi.key -outform DER -out wifi.der -nodes -days 36500 -subj "/CN=wifi drivers"

使用以下命令把公钥导入到MOK证书列表内,命令执行时会要求你输入两次密码(重启后要验证这个密码),之后重启电脑。在进入系统前会出现蓝色界面,按照这个链接里图片所示步骤操作。

sudo mokutil --import ./wifi.der

成功导入公钥后,执行以下命令,检查证书是否成功导入。若导入成功,则会在输出结果中找到Issuer: CN=wifi drivers字样。

mokutil --list-enrolled

给模块签名,参数列表中,私钥在前,公钥在后。

/usr/src/linux-headers-5.0.0-20-generic/scripts/sign-file sha256 wifi.key wifi.der 8821ce.ko

用以下命令检查签名是否成功。输出结果中出现这样的字符 Moudle signature appended,表示签名成功。

hexdump -C 8821ce.o | tail

#......

003c14d0 00 02 00 00 00 00 00 00 00 01 87 7e 4d 6f 64 75 |...........~Modu|

003c14e0 6c 65 20 73 69 67 6e 61 74 75 72 65 20 61 70 70 |le signature app|

003c14f0 65 6e 64 65 64 7e 0a |ended~.|

003c14f7

最后就是安装和加载模块了。

sudo make install

sudo modprobe -a 8821ce

有输出表示加载成功。

lsmod | grep 8821ce

参考链接:

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值