apt-keyの仕組みと問題点
apt-keyはシステム上のリポジトリ鍵を管理するコマンドです。
apt-keyコマンドはAPTキーリング/etc/
)
よく紹介される例は第458回の
- ※5
- 独自パッケージリポジトリを作成・
公開したい場合は第485回の 「aptlyで本格的なパッケージリポジトリを作る」 も参考になるでしょう。
そんな
- ※6
- まもなくリリース予定のDebian 11ではapt-keyは残される予定です。来年リリース予定であるUbuntu 22.
04 LTSでも残っている可能性はあります。それ以降のリリースは特別な理由がない限り削除される見込みです。
また,
Warning: apt-key is deprecated. Manage keyring files in trusted.gpg.d instead (see apt-key(8)).
これはセキュリティ上の懸念点からくるもので,
apt-key add
は単一ファイル( /etc/
)apt/ trusted. gpg に鍵を追加していくため, 複数のリスクの異なるリポジトリの鍵を同じ権限で管理しなくてはならない。 - リポジトリ鍵として追加した鍵は,
すべてのリポジトリに対して適用される。
実はどちらも昔から言われていたことで,
1についてはapt-key add
を使わずに,/etc/
以下に個別のリポジトリ鍵を置くという回避策があります。実際,
APTのリポジトリ鍵は/etc/
」
- ※7
- apt-pinningでリポジトリの優先度を設定していればある程度は緩和可能です。
結局のところ/etc/
」
現時点ではapt-keyの代替となるCLIは用意されていないようです。
今後リポジトリ鍵はどう運用すべきか
すべての利用者がサードパーティのリポジトリの利用をまったくやめることは難しいため,
まもなくリリース予定のDebian 11の2021年7月17日時点でのリリースノートでは,/etc/
に個別にリポジトリ鍵を保存する方法を提案しています。apt-keyコマンドを実行したときの警告も同様です。
これはこれまでapt-key addに渡していたリポジトリ鍵を,/etc/
に保存するだけというシンプルなものです。このときバイナリ形式なら拡張子
よって次のような手順で,
$ gpg --no-default-keyring --keyring /tmp/temp-keyring.gpg \ --import "ダウンロードしたリポジトリ鍵ファイル名" $ gpg --no-default-keyring --keyring /tmp/temp-keyring.gpg \ --export --output "リポジトリ名".gpg $ rm /tmp/temp-keyring.gpg $ sudo cp "リポジトリ名".gpg /etc/apt/trusted.gpg.d/
しかしながら,/etc/
の利用も
より良い手順は,/usr/
に鍵を保存しておき,sources.
からリポジトリごとに参照する鍵を指定する方法です。
$ gpg --no-default-keyring --keyring /tmp/temp-keyring.gpg \ --import "ダウンロードしたリポジトリ鍵ファイル名" $ gpg --no-default-keyring --keyring /tmp/temp-keyring.gpg \ --export --output "リポジトリ名".gpg $ rm /tmp/temp-keyring.gpg $ sudo mkdir -p /usr/local/share/keyrings/ $ sudo cp "リポジトリ名".gpg /usr/local/share/keyrings/
ただしこれだけだとAPTからダウンロードしたリポジトリ鍵を参照できません。次にsources.
に鍵を指定するオプションを付けます。おそらくサードパーティのリポジトリを導入する際には,/etc/
」
変更前: deb [arch=amd64] http://dl.google.com/linux/chrome/deb/ stable main 変更後: deb [arch=amd64 signed-by=/usr/local/share/keyrings/"リポジトリ名".gpg] http://dl.google.com/linux/chrome/deb/ stable main
つまりdebの後ろに[signed-by=/usr/
」[arch=amd64]
」[]
」[]
」
これによりダウンロードしたリポジトリ鍵は,
おそらく当分の間,
- ※8
- PPAの追加でよく使われる
「 add-apt-repository
」はまだapt-keyコマンドを内部で利用しています。こちらも将来的には何らかの対応が行われると思われます。
ちなみに前述のサードパーティのリポジトリを利用することについて解説したDebian Wikiのページでは,