2014-10-28 5 views
1

현재 진행중인 프로젝트에서 개인 키를 사용하여 출력 실행 파일 (elf) 중 하나에서 서명을 생성해야합니다 (서명은 rpm의 파일 중 하나, 개인 이 작업을 수행하는 핵심은 빌드 시스템을 떠나지 않습니다). 이것은 현재 내 makefile 내에서 rpm 시스템 외부의 "make", "make install"프로세스의 일부로 수행됩니다.rpmbuild 및 서명 된 실행 파일

그러나 rpmbuild를 사용하여 rpmbuild를 사용하여 % build를하고 % install 후에 rpm을 사용하는 것이 내 실행 파일을 수정하는 것 같습니다 (어떤 이유로 인해 .strtab 및 .symtab에서 내용을 제거하는 것처럼 보입니다). 이것은 나중에 rpm을 설치 한 후에 실행 파일의 변경으로 인해 내 서명 데이터를 거부하는 다른 소프트웨어를 의미합니다 ...

rpmbuild가 내 파일을 수정하지 못하게하는 방법이 있습니까? 방법은 내 % 빌드의 일부를 이동하고 % install은 그러한 변경을 한 후에 수행합니다 (그래서 서명 파일을 다시 생성 할 수 있습니다).

+0

이것은 디버그 기호 스트립 핑일 가능성이 있으며이를 해제 할 수 있습니다 (파일 단위는 아닐지라도). 나는 그것을위한 방법이 무엇인지를 기억하지 못한다. 그러나 나는 나중에 볼 수있다. 또는 바이너리를 미리 스트리핑 (해당 정보가 필요 없다고 가정)하면 바이너리를 실제로 시도하지 않고 rpm 스트라이프가 바이너리를 수정하는 것을 방지 할 수 있습니다. –

답변

0

-debuginfo 패키지 건물을 사용 중지하면 패키지에서 바이너리를 제거하는 RPM이 중지됩니다. 매크로를 %{nil}으로 설정하면됩니다.

rpmmacros 파일 (기본적으로 $HOME/.rpmmacros이 검색됩니다)에서 다음 행을 찾아야합니다.

%debug_package %{nil} 

또한 -D'debug_package %{nil}'와 명령 줄에서 그렇게하는 것이 가능할 수도 있지만 나는 그것을 테스트하지 않았습니다.

0

buildid (스트립 핑에 영향을주지 않는 ELF 실행 파일에서 생성 된 다이제스트)에 서명하는 것이 좋습니다. buildid (검증 할 수 있음)의 서명은 다른 서명 체계와 마찬가지로 안전하며 다른 일반 텍스트입니다.

+0

불행히도 내 서명 방식이 아닙니다. –