RPMに署名する(GPGキーの作成)
概要
独自に作成したRPMにGPGで署名する。またyumでGPGキーのチェックが行われるように公開鍵を作成する。
手順
GPGキーの作成
まずホームディレトリにgnupgが使うディレクトリを作成する。
mkdir ~/.gnupg
gpg --gen-keyを実行する。
# gpg --gen-key
ここからは対話形式となるので順に答えていく。まず鍵の種類。
ご希望の鍵の種類を選択してください: (1) DSAとElgamal (既定) (2) DSA (署名のみ) (5) RSA (署名のみ) 選択は?
デフォでいいのでそのままENTERキー。次に鍵の長さ。
DSA keypair will have 1024 bits. ELG-E keys may be between 1024 and 4096 bits long. What keysize do you want? (2048)
ここもデフォでいいのでそのままENTERキー。次は鍵の有効期限。
鍵の有効期限を指定してください。
0 = 鍵は無期限
<n> = 鍵は n 日間で満了
<n>w = 鍵は n 週間で満了
<n>m = 鍵は n か月間で満了
<n>y = 鍵は n 年間で満了
鍵の有効期間は? (0)
ここもデフォで進める。確認のプロンプトが出たら"y"で進める。
これで正しいですか? (y/N) y
次にユーザIDを設定。
あなたの鍵を同定するためにユーザーIDが必要です。
このソフトは本名、コメント、電子メール・アドレスから
次の書式でユーザーIDを構成します:
"Heinrich Heine (Der Dichter) <heinrichh@duesseldorf.de>"
僕の場合だとこうなる。
本名: Kuniaki Shimizu 電子メール・アドレス: kunkichi@gmail.com コメント: cafechantant.com
確認のプロンプトが出てくるので"O"でOK。
次のユーザーIDを選択しました:
“Kuniaki Shimizu (cafechantant.com) <kunkichi@gmail.com>”
名前(N)、コメント(C)、電子メール(E)の変更、またはOK(O)か終了(Q)? O
次にパスフレーズを入力
秘密鍵を保護するためにパスフレーズがいります。
パスフレーズを入力すると、乱数が生成される。
今から長い乱数を生成します。キーボードを打つとか、マウスを動かす とか、ディスクにアクセスするとかの他のことをすると、乱数生成子で 乱雑さの大きないい乱数を生成しやすくなるので、お勧めいたします。 +++++++++++++++.++++++++++....++++++++++++++++++++.++++++++++++++++++++++++++++++++++++++++..++++++++++++++++++++++++++++++++++++++++.+++++>.++++++++++...........+++++ 十分な長さの乱数が得られません。OSがもっと乱雑さを収集 できるよう、何かしてください! (あと282バイトいります)
この時、裏でネットワーク越しにファイルを送るとか、いろいろやらないとここから進まないので注意。
RPMへ署名
鍵が出来たら、~/.rpmmacrosを作成して以下を記載。
%_signature gpg %_gpg_name Kuniaki Shimizu (cafechantant.com) <kunkichi@gmail.com>
作成したRPMに署名する。鍵を作成した時に指定したパスフレーズを入力する。
rpm --resign /usr/src/redhat/RPMS/noarch/koan-0.6.1-2.noarch.rpm パスフレーズの入力: パスフレーズは正常です。 /usr/src/redhat/RPMS/noarch/koan-0.6.1-2.noarch.rpm: gpg: WARNING: standard input reopened gpg: WARNING: standard input reopened
公開鍵の作成
yumで公開する公開鍵を作成する。
# gpg -a --export "Kuniaki Shimizu" > RPM-GPG-KEY-Original
これをyumで公開するディレクトリ(トップディレクトリ辺り)に置いておく。
RPMパッケージの検証
テストで検証してみる。まずは公開鍵をインポートする。
# rpm --import RPM-GPG-KEY-Original
先ほど署名を入れたRPMパッケージを検証する。
# rpm -K /usr/src/redhat/RPMS/noarch/koan-0.6.1-2.noarch.rpm
以下のように表示されれば改竄されていないということ。
/usr/src/redhat/RPMS/noarch/koan-0.6.1-2.noarch.rpm: (sha1) dsa sha1 md5 gpg OK

