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はありません。 「パッケージかどうか」しか聞かれません。また、これはパッケージが1つのキーでのみ署名でき、署名を変更するとパッケージが変更されることを意味します。
Yumは、「gpgcheck = 1」(デフォルト)で構成されたリポジトリからパッケージをダウンロードするときにいくつかの手順を実行します。
リポジトリから最初のパッケージをダウンロードした後、単純な「このパッケージが既知のgpgkeyで署名されているかどうか」という呼び出しが行われます。もしそうなら、何もしないでください。それ以外の場合は、ユーザーに警告が表示されます。これは純粋に情報提供用です。
トランザクションが開始される前に、yumはパッケージが既知のgpgkey(rpmdbにインストールされている)で署名されていることを確認します。その場合、パッケージは有効であり、追加のステップは実行されません。そうでない場合は#3に進みます。
Yumは、パッケージソースストアの「gpgkey」データに提供されているすべてのファイルをダウンロードします。 Yumはrpmdbにすでに存在するキーを無視し、それを解析します。新しいキーがない場合、yumは失敗します。
リポジトリに「gpgcakey」が指定されている場合、yumは「gpgcakey」データに提供されているすべてのファイルをダウンロードします。 Yumはリポジトリのgpgキーリングにすでに存在するキーを無視し、それを解析します。ファイルの解析後にgpgcakeysがインストールされていない場合、yumは失敗します。新しいgpgcakeyがある場合は、別のリポジトリからCAキーにインポートしましたか?自動的にインポートします。このCAキーを初めて表示する場合は、ユーザーにインストールするかどうかを尋ねるメッセージが表示されます(-yが指定されていない限り)。彼が拒否した場合どのkey、yumが失敗します(インポートされたすべてのキーはrepo.gpgキーリングに残りますが)。
有効な「gpgcakey」が 1 つ以上ある場合、yum は「gpgkey」.asc ファイルをダウンロードしようとします。ファイルがない場合、yumはgpgcakeyがないかのように手順6に進みます。存在する場合、「gpgkey」は「gpgcakey」に対してテストされ、合格するとrpmdbに追加され、失敗するとyumは失敗します(インポートされたすべてのキーはrpmdbに残りますが)。
新しいgpgkeyがある場合、ユーザーに各キーをインストールするように求められます(-yが指定されていない限り)。彼が拒否した場合どの決定的にyumは失敗しました。
新しいキーがインストールされた後、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キーのインストールを拒否するように設定することはできません。