make binrpm-pkg 模块签名和debuginfo同时开启会出错

模块签名是在mod_install的时候,但后续在find-debuginfo.sh中debugedit又会修改文件,导致前面的签名无效。

可行改动方法为:

在Makefile中将 mod_sign_cmd = perl $(srctree)/scripts/sign-file $(CONFIG_MODULE_SIG_HASH) $(MODSECKEY) $(MODPUBKEY) 改为 mod_sign_cmd=true,

在find-debuginfo_kk.sh中的debugedit后几行位置加上下面三行

if [[ $f =~ .ko$ ]]; then$BUILDDIR/scripts/sign-file "sha256" "$BUILDDIR/signing_key.priv" "$BUILDDIR/signing_key.x509" "$f"fi

vault.centos.org/7.3.1611/os/Source/SPackages/rpm-4.11.3-21.el7.src.rpm

linux内核模块签名 Documentation/module_signing.txt

内核在模块模块加载时使用加密签名验证,校验签名是否与已编译的内核公钥匹配。目前只支持RSA X.509验证。

签名验证在通过CONFIG_MODULE_SIG使能。打开签名同时还会强制做模块ELF元数据检查,然后再做签名验证。

公钥生成

内核编译时可以指定一系列的公钥。x509.genkey文件用来生成X509密钥。如果没有该文件,系统会自动提供一个默认的配置。Makefile会根据x509.genkey规则在内核编译根目录生成默认配置,用户可以手动更改该文件。

由此在内核编译过程中分别生成私钥和公钥文件分别为./signing_key.priv和./signing_key.x509。

默认配置是使用/dev/random生成的。如果/dev/random没有足够数据,在后台运行以下命令可以生成更多的数据:rngd -r /dev/urandom。

模块签名

设置了CONFIG_MODULE_SIG_ALL,所有模块将会自动添加签名。如果没有设置,需要手动添加:

scripts/sign-file $(MODSECKEY) $(MODPUBKEY) modules.ko

哈希算法必须为sha1, sha224, sha256, sha384, sha512。对应的加密算法必须是使能的。CONFIG_MODULE_SIG_HASH设置sign-file使用的默认算法。

MODSECKEY=

加密私钥文件,默认是./signing_key.priv

MODPUBKEY=

加密公钥文件,默认为./signing_key.x509

签名模块裁减

签名模块裁减就是去除签名部分,在重新签名之前需要先裁减之前的签名。在打包内核模块发布时,并没有自动裁减。

加载签名模块

模块是通过insmod来加载的,模块加载时通过检查模块的签名部分来验证。

不合法签名和没有签名的模块

如果设 置了CONFIG_MODULE_SIG_FORCE或者在内核启动命令行设置了module.sig_enforce,内核将只加载带有公钥的合法签名 模块。如果都没有设置则会加载没有签名的模块。如果内核有密钥,但模块没有提供合法的签名就会被拒绝加载。下表说明了各种情况:

模块状态 许可模式 强制检查未签名 通过 EKEYREJECTED签名,没有公钥 ENOKEY ENOKEY签名,公钥 通过 通过非法签名,公钥 EKEYREJECTED EKEYREJECTED签名,过期密钥 EKEYEXPIRED EKEYEXPIRED破坏的签名 EBADMSG EBADMSG破坏的ELF ENOEXEC ENOEXEC

linux内核模块签名,linux内核模块签名相关推荐

  1. 【Linux 内核】Linux 内核特性 ( 组织形式 | 进程调度 | 内核线程 | 多平台虚拟内存管理 | 虚拟文件系统 | 内核模块机制 | 定制系统调用 | 网络模块架构 )

    文章目录 一.Linux 内核特性 1.Linux 内核组织形式 2.Linux 进程调度 3.Linux 内核线程 4.Linux 内核多平台虚拟内存管理 5.Linux 虚拟文件系统 6.Linu ...

  2. linux内核编译与内核模块

    linux内核简介.配置编译与内核模块 Linux系统架构 主要分为用户空间和内核空间.用户空间包括应用程序和C库等.内核空间包括系统调用接口,linux内核以及体系结构相关代码.关于linux要区分 ...

  3. linux内核驱动ldd3_走进linux 驱动开发 之 内核模块

    一.Linux内核简介 1.宏内核与微内核 内核分为四大类:单内核(宏内核):微内核:混合内核:外内核. 宏内核(Monolithickernel)是将内核从整体上作为一个大过程来实现,所有的内核服务 ...

  4. Linux内核开发_内核模块

    内核模块是什么? Linux下的内核模块类似于Windows下的DLL动态链接库技术,和我们平常所使用的一些动态链接的SDK库一样,只是调用者是内核而已,不是用户态的程序. 内核模块拥有的的权限是和用 ...

  5. Linux可加载内核模块(LKM)(转载)

    转载: 漏天剑 文章导航: 为校长杯流尽最后一滴血, Lkm注射, 返回首页 Linux可加载内核模块(LKM) Linux可加载内核模块完全版 --黑客.病毒程序编写者和系统管理员的概念性指南 作者 ...

  6. Linux驱动篇之内核模块

    Linux驱动篇之内核模块 1.基本概念 模块与驱动: Linux中,将设备分为三种基本的类型. 字符设备 块设备 网络接口 Linux中还有一个很重要的概念,模块.可在运行时添加到内核中的代码被称为 ...

  7. 《学活Linux》第二讲——内核模块和驱动模型

    <学活LINUX> 第二讲 内核模块和驱动模型 "各位观众晚上好.今天是7月29日,星期六,农历六月十二.欢迎收看<新闻联播>节目--台风'杜苏芮'强度减弱,受其寒流 ...

  8. Linux openssl 搭建CA、签名证书

    目录 前言 配置CA 安装openssl 修改 openssl 配置文件 创建所需要的文件 创建CA KEY 创建CA 证书 创建证书 生成密钥 生成签名请求文件 签名证书请求文件 自签名证书 创建 ...

  9. 360签名工具 linux,360apk签名工具-360apk签名工具(qihoo360 apk signer) 1.0 免费版 - 河东下载站...

    360apk签名工具是一款非常出色的apk反编译软件,体积虽小,但是功能上非常专业,对于从事移动开发相关的用户们来说是必不可少的得力工具,有了它再也不用一个一个进行操作了,太浪费时间,360apk签名 ...

最新文章

  1. Cannot center sparse matrices: pass `with_mean=False`
  2. spring异常Unsatisfied dependency expressed through constructor parameter 0
  3. Android核心分析 之一分析方法论探讨之设计意图
  4. PyTorch教程(八):常见激活函数与Loss的梯度
  5. linux 7 services设定,CENTOS/RHEL7系统中设置SYSTEMD SERVICE的ULIMIT资源限制
  6. 回顾Spirng ioc 控制反转
  7. rc.local介绍(linux启动系列之一)
  8. 根据二叉树的先序、中序遍历结果重建二叉树
  9. 高效的敏捷测试第七课 自动化部署和BVT
  10. Android中MVP模式
  11. mysql节假日函数_如何在MySQL中计算不包括周末和节假日的日期差
  12. azkaban 安装
  13. Anaconda入门:安装及包与环境的管理(conda命令)
  14. 市政管网检测机器人收费标准_淮安市金湖县市政管道机器人检测怎么收费
  15. 数据结构的学习_4.2 矩阵的压缩存储(对称矩阵)
  16. 五一干货资料整理,在学习上的劳动才是最好的劳动! (包括:ML、DL、RL、Paper、NLP、CV、KG等)...
  17. 互联网大厂考点(阿里+百度+腾讯+字节跳动+美团+京东)
  18. [直播学习--2022/7/22]--前端发展趋势(尤雨溪老师)
  19. 中国BOPET电容器膜市场行业投资前景展望及风险评估报告2022-2028年
  20. mysql 南邮ctf_南邮ctf之web之wp

热门文章

  1. html 监听后端变化_SpringBoot2.0整合WebSocket,实现后端数据实时推送!
  2. 从容器开始的良好做法
  3. MySQL 8.0来了,逆之者亡...
  4. c语言排队系统,【分享】C语言 银行取票排队系统
  5. manjaro设置java_manjaro 深度学习编程环境搭建
  6. junit依赖_3、Spring 中的依赖注入(DI),你都知道多少?
  7. 联想服务器imm默认地址_命令下配置ip地址
  8. 可视化界面_uniapp通过 HBuilderX 可视化界面构建项目
  9. java中html5表格_java:HTML(table表格,ul列表)和CSS(导入.css文件,三种定义颜色方式,三种样式选择器,a标签属性顺序,)...
  10. solr 英文模拟mysql like查询xml_Solr实现类似MySQL的LIKE查询功能