2014-10-28 79 views
1

在我正在開發的一個項目中,我需要使用私鑰生成一個來自我的輸出可執行(elf)文件的簽名(簽名形成rpm中的一個文件,私有關鍵做到這一點永遠不會離開構建機器)。這是目前在我的makefile中作爲rpm系統之外的「make」,「make install」進程的一部分完成的。rpmbuild和簽名的可執行文件

但是,似乎在使用rpmbuild製作rpm時,在%build和%install之後的某個時刻,它會進一步修改我的可執行文件(似乎是由於某種原因從.strtab和.symtab刪除了東西)。這意味着在安裝完rpm之後,我正在集成的其他軟件由於可執行文件的更改而拒絕我的簽名數據...

是否有某種方法可以阻止rpmbuild修改我的文件,或者至少某些將我的%build和%install的一部分移動到它做出任何這樣的更改之後(這樣我可以重新創建簽名文件)。

+0

這可能是調試符號剝離,您可以禁用它(儘管可能不是基於每個文件)。我不記得那是什麼方法,但我可以稍後再看。或者,如果您預先剝離了您的二進制文件(假設您不需要這些信息),則可能可以防止實際修改二進制文件的rpm分離,儘管它嘗試這樣做。 – 2014-10-28 15:49:33

回答

0

如果您禁用了-debuginfo軟件包構建,我相信RPM會停止剝離軟件包中的二進制文件。

可以通過將%debug_package宏設置爲%{nil}來完成此操作。

在rpmmacros文件($HOME/.rpmmacros默認情況下,我相信)下面的行應該這樣做。

%debug_package %{nil} 

它可能還可以這樣做與-D'debug_package %{nil}'在命令行上,但我沒有測試過這一點。

0

您可能會考慮簽署buildid(這是在ELF可執行文件上生成的摘要,它不會剝離)。 buildid上的簽名(可以驗證)與任何其他簽名方案一樣安全,只是一個不同的明文。

+0

不幸的是,這不是我的簽名方案。 – 2014-11-04 10:46:57