web-dev-qa-db-ja.com

Debian 9、APT、および「GPGエラー:... InRelease:次の署名は無効です:」

Debianリポジトリ を公開しています。これは、4096ビットのGPGキーで署名されており、しばらくの間、Debian 7およびDebian 8システムから陽気に使用されています。最近、私のユーザーの1人が、Debian 9で問題が発生していると報告しました。具体的には、apt-get updateが生成しました:

パッケージリストを読み込んでいます...完了
 W:GPGエラー: http://Debian-repository.JdeBP.info 。 stable InRelease:次の署名は無効でした:A71733F3CEBD655CB25A0DDCE1E3A497555CE68F 
 W:リポジトリ ' http://Debian-repository.JdeBP.info 。安定したInRelease 'は署名されていません。

Repo APT secure-apt-get update GPG signature was invalid "and" Frustrated with aptly and GPG signing の人々とは異なり、 = "私はaptlyを使用しているnotです。そのため、明らかにどのようなaptlyバグにも悩まされていません。 (-:

それで問題は何ですか?

8
JdeBP

この問題の原因は、Debian wikiやその他の同様のdocoが更新されておらず、ほとんどがほんの2、3の大部分bunt-Debian以外の関連発表personal = WWWサイト、SHA-1暗号化の設定を示すキーのサポートがAPT Debian 9でオフになりました(具体的には、APTバージョン1.4〜beta1、Debian 9のバージョンは1.4.7です。)

したがって、リポジトリ発行者は2つのことを行う必要があります。

  • personal-digest-preferencesおよびpersonal-cipher-preferences$HOME/.gnupg/gpg.conf自分のGPG設定からSHA-1を削除します。これにより、新しいキーで問題が発生するのを防ぎます。
  • 設定現在のリポジトリ署名キーに含まれているを調整して、そこからSHA-1を削除します。そのためには:
    • 実行
      gpg --edit-key "$ {key_fingerprint}"
      適切なキーフィンガープリントに置き換えてから、prefおよびsetprefコマンドを使用してキーの設定を編集し、キーをキーリングに保存します。
    • 更新された鍵の公開鍵を鍵リングからファイルにエクスポートします。
    • 変更した署名鍵でリポジトリに再署名します。
    • 更新された署名鍵の公開鍵ファイルを公開します。

新しい署名鍵を生成する必要はなく、SHA-1が削除された更新済みの鍵は引き続き古いDebian 8 APTと相互運用できることに注意してください。

参考文献

  • ジュリアン・アンドレス・クロデ(2016-03-14)。 APTでのSHA-1サポートの削除。 jak-linux.org。
  • ジュリアン・アンドレス・クロデ(2016-03-15)。 APT + SHA1。jak-linux.orgの説明と更新。
9
JdeBP

JdeBPがすでに指摘したように、Debian 9以降、apt 9はSHA-1をサポートしなくなりました。つまり、InReleaseファイルをSHA-256で作成する必要があります(Release.pgも同様です)。

私にとってそれを修正したのは、-digest-algo SHA256をgpgへのパラメーターとして指定していたため、完全なシーケンスは次のようになります。

  1. パッケージを作成します。

    dpkg-deb --build ${PACKAGE_NAME}-1.0/
    Sudo rm ${SOME_TEMP_PATH}/*
    mv ${PACKAGE_NAME_name}-1.0.deb ${SOME_TEMP_PATH}/
    dpkg-scanpackages ${SOME_TEMP_PATH} /dev/null | gzip -9c > ${SOME_TEMP_PATH}/Packages.gz
    Sudo rm ${PATH_TO_REPO_IN_WWW_SERVER}/*
    Sudo cp ${SOME_TEMP_PATH}/* ${PATH_TO_REPO_IN_WWW_SERVER}
    cd ${PATH_TO_REPO_IN_WWW_SERVER}
    
  2. 署名する:

    apt-ftparchive --md5 --sha256 release .  > Release 
    gpg --digest-algo SHA256 --armor --output Release.gpg --detach-sign Release
    gpg --digest-algo SHA256 --clearsign --output InRelease Release
    

署名は、tempフォルダーから実行してから、Webサーバーフォルダーに完全なものをコピーすることもできます。または、.を呼び出すときに使用されるパス、つまり "apt-ftparchive"を試してみることもできます。 .debsを別のツリーに保存したい。

4