rpmbuild和签名的可执行文件

时间:2014-10-28 15:45:21

标签: linux makefile rpm rpmbuild rpm-spec

在我正在进行的项目中,我需要使用私钥从我的一个输出可执行文件(elf)生成一个签名(签名形成rpm中的一个文件,私钥直接执行此操作离开构建机器)。这个目前在我的makefile中完成,作为" make"," make install"的一部分。转速系统外的过程。

然而,似乎当使用rpmbuild制作rpm时,在%build和%install之后的某个时刻,它进一步修改我的可执行文件(似乎是出于某种原因从.strtab和.symtab中删除了东西)。这意味着在安装rpm后,我正在集成的其他软件由于可执行文件的更改而拒绝我的签名数据...

是否有某些方法可以阻止rpmbuild修改我的文件,或至少某种方式将我的%build和%install的一部分移动到它进行任何此类更改之后(因此我可以重新创建签名文件)。 / p>

2 个答案:

答案 0 :(得分:2)

如果你禁用-debuginfo软件包构建,我相信RPM会停止在软件包中剥离二进制文件。

您可以将%debug_package宏设置为%{nil}

在rpmmacros文件中(我相信默认搜索$HOME/.rpmmacros)以下行应该这样做。

%debug_package %{nil}

也可以在-D'debug_package %{nil}'的命令行上执行此操作,但我还没有测试过。

答案 1 :(得分:0)

您可以考虑签署buildid(这是在ELF可执行文件上生成的摘要,它对于剥离是不变的)。 buildid上的签名(可以验证)与任何其他签名方案一样安全,只是一个不同的明文。