4장. 고급 주제
이 섹션에서는 소개 튜토리얼의 범위를 벗어나 실제 RPM 패키징에서 유용한 주제를 설명합니다.
4.1. 패키지 서명
패키지는 타사가 콘텐츠를 변경할 수 없도록하기 위해 서명됩니다. 사용자는 패키지를 다운로드할 때 HTTPS 프로토콜을 사용하여 추가 보안 계층을 추가할 수 있습니다.
패키지에 서명하는 세 가지 방법이 있습니다.
4.1.1. GPG 키 생성
절차
GPG(GNU 개인 정보 보호 ECDHE) 키 쌍을 생성합니다.
# gpg --gen-key
생성된 키를 확인하고 확인합니다.
# gpg --list-keys
공개 키를 내보냅니다.
# gpg --export -a '<Key_name>' > RPM-GPG-KEY-pmanager
참고<Key_name> 대신 키에 대해 선택한 실제 이름을 포함합니다.
내보낸 공개 키를 RPM 데이터베이스로 가져옵니다.
# rpm --import RPM-GPG-KEY-pmanager
4.1.2. 기존 패키지에 서명 추가
이 섹션에서는 서명 없이 패키지를 빌드할 때 가장 일반적인 경우를 설명합니다. 서명은 패키지 릴리스 바로 앞에 추가됩니다.
패키지에 서명을 추가하려면 rpm-sign
패키지에서 제공하는 --addsign
옵션을 사용합니다.
둘 이상의 서명이 있으면 패키지 빌더에서 최종 사용자까지 패키지의 소유권 경로를 기록할 수 있습니다.
절차
패키지에 서명을 추가합니다.
$ rpm --addsign blather-7.9-1.x86_64.rpm
참고서명의 시크릿 키의 잠금을 해제하려면 암호를 입력해야 합니다.
4.1.3. 여러 서명이 포함된 패키지 서명 확인
절차
여러 서명이 있는 패키지 서명을 확인하려면 다음을 실행합니다.
$ rpm --checksig blather-7.9-1.x86_64.rpm blather-7.9-1.x86_64.rpm: size pgp pgp md5 OK
rpm --checksig
명령의 출력에 있는 두pgp
문자열은 패키지가 두 번 서명되었음을 표시합니다.
4.1.4. 이미 존재하는 패키지에 서명을 추가하는 실제 예
이 섹션에서는 기존 패키지에 서명을 추가하는 것이 유용할 수 있는 예를 설명합니다.
회사의 분할은 패키지를 만들고 분할의 키를 사용하여 서명합니다. 회사의 서명은 패키지의 서명을 확인하고 패키지에 회사 서명을 추가하여 서명된 패키지가 정품임을 나타냅니다.
두 개의 서명을 사용하면 패키지는 소매 업체로 이동합니다. 리포터는 서명을 확인하고 일치하는 경우 서명을 추가합니다.
이제 패키지를 통해 패키지를 배포하려는 회사로 전환할 수 있습니다. 패키지의 모든 서명을 확인한 후 실제 사본임을 확인합니다. 배포 회사의 내부 제어에 따라 자체 서명을 추가하여 패키지가 회사의 승인을 수신했음을 알릴 수 있습니다.
4.1.5. 기존 패키지에서 서명 교체
다음 절차에서는 각 패키지를 다시 빌드하지 않고도 공개 키를 변경하는 방법을 설명합니다.
절차
공개 키를 변경하려면 다음을 실행합니다.
$ rpm --resign blather-7.9-1.x86_64.rpm
참고서명의 시크릿 키의 잠금을 해제하려면 암호를 입력해야 합니다.
--resign
옵션을 사용하면 다음 절차에 표시된 대로 여러 패키지의 공개 키를 변경할 수도 있습니다.
절차
여러 패키지의 공개 키를 변경하려면 다음을 실행합니다.
$ rpm --resign b*.rpm
참고서명의 시크릿 키의 잠금을 해제하려면 암호를 입력해야 합니다.
4.1.6. 빌드 시 패키지에 서명
절차
rpmbuild
명령을 사용하여 패키지를 빌드합니다.$ rpmbuild blather-7.9.spec
--addsign
옵션을 사용하여rpmsign
명령으로 패키지에 서명합니다.$ rpmsign --addsign blather-7.9-1.x86_64.rpm
- 선택적으로 패키지의 서명을 확인합니다.
$ rpm --checksig blather-7.9-1.x86_64.rpm blather-7.9-1.x86_64.rpm: size pgp md5 OK
여러 패키지를 빌드하고 서명할 때 다음 구문을 사용하여 Pretty privacy (PGP) 암호를 여러 번 입력하지 마십시오.
$ rpmbuild -ba --sign b*.spec
서명의 시크릿 키 잠금을 해제하려면 암호를 입력해야 합니다.