【雑記】 apt-getの公開鍵エラー [PCトラブル]
ただ殴られたオタのほうが途中で「オレが一番愛してるんだよ!!」って言ってたのはちょっと笑った
@Lunamaria
今回は Linuxの IT技術の話題なので
難しい話になるため一般の方はスルー推奨です。
Linuxには色々なディストリビューションがあるので
色々な派閥があります。
その中でも2強なのが
・Ubuntu系
・Fedora系
だと思います。
(今回は Desktop OSに話を絞りますので、 Server OSは対象外です)
この2つはアプリケーションパッケージ管理の仕方も違います。
・Ubuntu - apt - deb
・Fedora - yum - rpm
といった具合です。
(厳密に言うと両刀使いも可能だったりしますが、今回は割愛します)
私は会社で Ubuntu Linuxを Desktop OSとして使っているのですが
ある日、apt-get updateでパッチ当てをしようと思ったらエラーが発生しました。
エラーメッセージはこんな感じ。
# apt-get update
W: GPG error: http://www.debian-multimedia.org sid Release: 公開鍵を利用できないため、以下の署名は検証できませんでした: NO_PUBKEY 07DC563D1F41B907
W: これらの問題を解決するためには apt-get update を実行する必要があるかもしれません
ネットで調べてみたら、公開鍵が古くなっているので
鍵サーバから取得し直す必要があるとのこと。
その方法も生のコマンドで書かれてあったので
これは簡単に解決すると思いました。
# gpg --keyserver pgp.nic.ad.jp --recv-keys 07DC563D1F41B907
ところが、このコマンドを流しても server connection time out errorになってしまいます。
コマンドが通らない・・・。
gpgコマンドが用いるポート番号を調べてみると 11371とかかなり高い方でした。
きっとポートが閉じられているので接続に失敗したのでしょう。
さて、この環境だと gpgコマンドでダイレクトに通信できません。
そこで考えたのが、http通信でキーを取得して apt-keyに登録するという2段構えの方法です。
やり方はこんな感じ。
wget -q http://ubuntuce.com/repos/Ubuntu_CE/apt/crosswire-launchpad-ppa.asc -O- | apt-key add -
wget -q "http://pgp.es.net/pks/lookup?op=get&search=0xB5D0C804ADB11277" -O- | apt-key add -
1番目は .ascファイルをダウソしてそのまま流し込んでいます。
この方法だと鍵コードに対応する鍵ファイルの名前を突き止めなければなりません。
一方、2番目の方法は鍵コードをそのまま検索クエリとして APIに投げています。
対応する鍵文字列をそのままhttp通信で得られるので apt-keyに流し込めます。
鍵の検索は
http://pgp.es.net/
でGUIを通じて行うことも出来ます。
自然文字列やコード値で検索できます。
検索したらこんな感じ。
http://pgp.es.net/pks/lookup?op=index&search=ppa.launchpad.net
http://pgp.es.net/pks/lookup?op=get&search=0x2B62C92207A80241
最後に、調査中に便利だったサイトをご紹介します。
gpgコマンドの通信の裏側や鍵サーバの一覧は役に立つかと。
http://www.cla-ri.net/pgp/faq.html
http://www.cla-ri.net/pgp/servers.html
ある鍵を探しに行ったときに、その鍵を持っているサーバと
持っていないサーバがあるので総ざらいする事態になるかも・・・。
コメント 0