GPG 서명이 없거나 확인할 수 없는 경우 rpm 및 yum이 실패하도록 강제하는 방법은 무엇입니까?

GPG 서명이 없거나 확인할 수 없는 경우 rpm 및 yum이 실패하도록 강제하는 방법은 무엇입니까?

rpm패키지에 GPG 서명이 없거나 누락된 키로 인해 확인할 수 없는 경우 강제 실행하고 실패하려면 어떻게 해야 합니까 ? yum다음 예에서는 RPM이 서명되었지만 키가 설치되지 않았다고 가정합니다.

RPM을 사용하면 경고가 표시되지만 이것이 실패하여 서명 키를 수동으로 설치해야 합니다.

# rpm -q gpg-pubkey --qf '%{name}-%{version}-%{release} --> %{summary}\n'
gpg-pubkey-c105b9de-4e0fd3a3 --> gpg(CentOS-6 Key (CentOS 6 Official Signing Key) <[email protected]>)

# rpm -ivh http://yum.example.com/company-release-el-6.noarch.rpm
Retrieving http://yum.example.com/company-release-el-6.noarch.rpm
warning: /var/tmp/rpm-tmp.3VmFk2: Header V4 RSA/SHA1 Signature, key ID 3bd6ec30: NOKEY
Preparing...                ########################################### [100%]
    1:company-release     ########################################### [100%]

yum을 사용하면 서명 키가 설치되지 않은 것과 관련된 경고가 표시되지 않습니다.

# yum install -vy http://yum.example.com/company-release-el-6.noarch.rpm

동작을 변경하기 위해 수정할 수 있는 이러한 명령이나 구성 설정에 전달할 수 있는 추가 플래그가 있습니까? 아니면 rpm --checksig설치하기 전에 RPM을 다운로드하여 실행 해야 합니까 ?

답변1

GPG 검사 패키지에 대해 이해해야 할 중요한 점은 GPG 서명이 패키지에 포함되어 있고 GPG 키가 rpmdb에 저장된다는 것입니다. "패키지 X에 서명한 키는 무엇입니까?"라고 묻는 보안 API는 없습니다. "패키지인지 여부"만 물어볼 수 있습니다. 또한 이는 패키지가 하나의 키로만 서명될 수 있으며 서명을 변경하면 패키지가 변경된다는 것을 의미합니다.

Yum은 "gpgcheck=1"(기본값)로 구성된 저장소에서 패키지를 다운로드할 때 여러 단계를 수행합니다.

  1. 저장소에서 첫 번째 패키지를 다운로드한 후 간단한 "이 패키지가 알려진 gpgkey로 서명되어 있는지" 호출이 수행됩니다. 그렇다면 아무것도 하지 마십시오. 그렇지 않은 경우 사용자에게 경고가 표시됩니다. 이는 순전히 정보 제공용입니다.

  2. 트랜잭션이 시작되기 전에 yum은 패키지가 알려진 gpgkey(rpmdb에 설치됨)로 서명되었는지 확인합니다. 그렇다면 패키지가 유효한 것이며 추가 단계가 수행되지 않습니다. 그렇지 않다면 #3으로 계속하세요.

  3. Yum은 패키지 소스 저장소의 "gpgkey" 데이터에 제공된 모든 파일을 다운로드합니다. Yum은 rpmdb에 이미 존재하는 키를 무시하고 이를 구문 분석합니다. 새 키가 없으면 yum이 실패합니다.

  4. 저장소에 "gpgcakey"가 지정되면 yum은 "gpgcakey" 데이터에 제공된 모든 파일을 다운로드합니다. Yum은 저장소의 gpg 키링에 이미 존재하는 키를 무시하고 이를 구문 분석합니다. 파일을 구문 분석한 후 gpgcakeys가 설치되지 않으면 yum이 실패합니다. 새로운 gpgcakey가 있는 경우 다른 저장소에서 CA 키로 가져왔습니까? 자동으로 가져옵니다. 이 CA 키를 처음 보는 경우 사용자에게 이를 설치할지 묻는 메시지가 표시됩니다(-y가 제공되지 않는 한). 그가 거절하면어느key, yum이 실패합니다(가져온 모든 키는 repo.gpg 키링에 남아 있지만).

  5. 유효한 "gpgcakey"가 하나 이상 있으면 yum은 "gpgkey".asc 파일을 다운로드하려고 시도합니다. 파일이 없으면 yum은 gpgcakey가 없는 것처럼 6단계를 계속 진행합니다. 존재하는 경우 "gpgkey"는 "gpgcakey"에 대해 테스트되고 통과하면 rpmdb에 추가되고, 실패하면 yum이 실패합니다(가져온 모든 키는 rpmdb에 남아 있지만).

  6. 새로운 gpgkey가 있는 경우 사용자에게 각 키를 설치할 것인지 묻는 메시지가 표시됩니다(-y가 제공되지 않는 한). 그가 거절하면어느결정적으로 yum은 실패했습니다.

  7. 새 키가 설치된 후 yum은 rpmdb의 gpgkey에 대해 패키지 서명을 다시 확인합니다. 실패하면 yum이 실패합니다.

답변2

/etc/yum.conf 에 넣고 localpkg_gpgcheck=1항상 yum으로 rpm을 설치하는지 확인하세요.

로컬 파일 시스템에 rpm이 있으면 다음을 수행하십시오.

yum install <rpm-on-local-filesys>

/etc/yum.repos.d의 모든 저장소에도 이를 설정했는지 확인하세요.

gpgcheck=1
enabled=1
gpgkey=file:///etc/pki/rpm-gpg/SOME-APPROVED-GPG-KEY

언급한 대로 rpm을 통해 설치할 때 얻을 수 있는 최선의 방법은 경고이며, 존재하지 않는 GPG 키에 대한 설치를 거부하도록 구성할 수는 없습니다.

관련 정보