rpmbuild和签名的可执行文件
在我正在开发的一个项目中,我需要使用私钥生成一个来自我的输出可执行(elf)文件的签名(签名形成rpm中的一个文件,私有关键做到这一点永远不会离开构建机器)。这是目前在我的makefile中作为rpm系统之外的“make”,“make install”进程的一部分完成的。rpmbuild和签名的可执行文件
但是,似乎在使用rpmbuild制作rpm时,在%build和%install之后的某个时刻,它会进一步修改我的可执行文件(似乎是由于某种原因从.strtab和.symtab删除了东西)。这意味着在安装完rpm之后,我正在集成的其他软件由于可执行文件的更改而拒绝我的签名数据...
是否有某种方法可以阻止rpmbuild修改我的文件,或者至少某些将我的%build和%install的一部分移动到它做出任何这样的更改之后(这样我可以重新创建签名文件)。
如果您禁用了-debuginfo
软件包构建,我相信RPM会停止剥离软件包中的二进制文件。
可以通过将%debug_package
宏设置为%{nil}
来完成此操作。
在rpmmacros文件($HOME/.rpmmacros
默认情况下,我相信)下面的行应该这样做。
%debug_package %{nil}
它可能还可以这样做与-D'debug_package %{nil}'
在命令行上,但我没有测试过这一点。
您可能会考虑签署buildid(这是在ELF可执行文件上生成的摘要,它不会剥离)。 buildid上的签名(可以验证)与任何其他签名方案一样安全,只是一个不同的明文。
不幸的是,这不是我的签名方案。 – 2014-11-04 10:46:57
这可能是调试符号剥离,您可以禁用它(尽管可能不是基于每个文件)。我不记得那是什么方法,但我可以稍后再看。或者,如果您预先剥离了您的二进制文件(假设您不需要这些信息),则可能可以防止实际修改二进制文件的rpm分离,尽管它尝试这样做。 – 2014-10-28 15:49:33