第4章 高度なトピック
本セクションでは、入門的なチュートリアルの範囲外のトピックについて説明しますが、実際の RPM パッケージ化で役に立ちます。
4.1. パッケージの署名
サードパーティーがそのコンテンツを変更できないようにパッケージに署名を行います。ユーザーは、パッケージをダウンロードする際に HTTPS プロトコルを使用して、セキュリティーをさらに強化できます。
パッケージの署名には、以下の 3 つの方法があります。
4.1.1. GPG キーの作成
手順
GNU Privacy Guard (GPG) キーペアを生成します。
# 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
コマンドの出力の 2 つのpgp
文字列は、パッケージが回署名されていることを示しています。
4.1.4. 既存のパッケージに署名を追加する実用的な例
本セクションでは、既存のパッケージへの署名の追加が役立つ状況の例を示します。
ある会社の部門が、パッケージを作成し、その部門のキーで署名を行います。次に、本社がパッケージの署名を確認します。次に、そのパッケージにコーポレート署名を追加し、その署名されたパッケージが本物であることを表明します。
これら 2 つの署名が付いた状態で、パッケージが小売商に送られます。この小売商は、署名をチェックし、一致を確認して自身の署名も追加します。
そして、このパッケージは、このパッケージをデプロイメントしたいと思う会社へと向かいます。パッケージ上の署名をすべて確認すれば、その署名が正式コピーであることが分かります。パッケージが企業の承認を受けたことを従業員に通知するために、その会社独自の署名を追加するかどうかは、パッケージ導入を行う会社の内部管理によって決まります。
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 good Privacy (PGP) パスフレーズを複数回入力しないようにします。
$ rpmbuild -ba --sign b*.spec
署名の秘密鍵のロックを解除にはパスワードを入力する必要があることに注意してください。