在我正在进行的项目中,我需要使用私钥从我的一个输出可执行文件(elf)生成一个签名(签名形成rpm中的一个文件,私钥直接执行此操作离开构建机器)。这个目前在我的makefile中完成,作为" make"," make install"的一部分。转速系统外的过程。
然而,似乎当使用rpmbuild制作rpm时,在%build和%install之后的某个时刻,它进一步修改我的可执行文件(似乎是出于某种原因从.strtab和.symtab中删除了东西)。这意味着在安装rpm后,我正在集成的其他软件由于可执行文件的更改而拒绝我的签名数据...
是否有某些方法可以阻止rpmbuild修改我的文件,或至少某种方式将我的%build和%install的一部分移动到它进行任何此类更改之后(因此我可以重新创建签名文件)。 / p>
答案 0 :(得分:2)
如果你禁用-debuginfo
软件包构建,我相信RPM会停止在软件包中剥离二进制文件。
您可以将%debug_package
宏设置为%{nil}
。
在rpmmacros文件中(我相信默认搜索$HOME/.rpmmacros
)以下行应该这样做。
%debug_package %{nil}
也可以在-D'debug_package %{nil}'
的命令行上执行此操作,但我还没有测试过。
答案 1 :(得分:0)
您可以考虑签署buildid(这是在ELF可执行文件上生成的摘要,它对于剥离是不变的)。 buildid上的签名(可以验证)与任何其他签名方案一样安全,只是一个不同的明文。