GPGはrpmとyum repoを発行し検証する

2747 ワード

https://blog.packagecloud.io/eng/2014/11/24/howto-gpg-sign-verify-rpm-packages-yum-repositories/本稿では、GPGの署名がRPMがファイルとYUM倉庫に適用されたこと、およびこれらの署名をどのように生成し検証するかを示す.また、pythonライブラリpygpgmeについても説明し、RPMおよびYUMの倉庫でGPG署名を検証する方法についても説明します.

GPGサインが必要なのは何ですか?


私たちはGPGで私たちが発表したデータに署名して、消費者は私たちのデータを取得して、私たちのデータの署名も取得して、私たちの署名を使って私たちのデータが人に改ざんされていないことを検証することができて、私たちが提供した原始データです.RPMパッケージとYUM repo metadataはいずれもGPGで署名できる.

Pygpgme


Pygpgmeは実際にGPGMEの機能をパッケージ化したpythonライブラリであり、GPGをより直接使用することができる.GPGMEは、GPG key、暗号化データ、復号化データなどを取得するのに非常に便利なインタフェースを提供しています.YUMはpythonで開発されているので、YUMはこのライブラリを大量に使用してRPMとYUM repo Metabataのデジタル情報を検証しています.

RPM GPG署名


RPMファイル形式はバイナリファイル形式であり、以下を含む.
  • は「lead」と呼ばれるデータ構造であるが、多くはすでに「header」データ構造に取って代わられている
  • である.
  • GPG署名を含む署名部分は、作成後に改ざんされていないことを検証するために使用することができる.
  • ヘッダは、RPMパケットおよびファイルに関する内部情報
  • を格納する一連のインデックスを含む.
  • CPI 0圧縮アーカイブされたgzipは、ファイルシステムの真のファイルに書き込まれるRPMファイルを含むGPG署名がヘッダとCPIO計算に基づいて生成され、署名部分に格納される.rpmsignまたはrpm--addsignでRPMsに署名することができます.例えばrpmがfilenameですrpm、あなたのSIGN Keyは
  • です
    Cara Wang 
    

    あなたのrpmacrosは
    %_gpg_name  Cara Wang 
    

    rpmパッケージに署名できます
    rpm --addsign filename.rpm
    

    RPM Repo metadata GPG署名


    repo metadataに署名する目的はRPMに署名する目的と同じです.改ざんを防止するために検証された.createrepoは、repoを作成するときに、自動的にrepo metadataにGPG署名を生成しません.コマンドを使用して、別々のGPG署名を生成できます.repo metadataがrepomdであると仮定します.xmlでは、次のコマンドを実行できます.
    gpg --detach-sign --armor repodata/repomd.xml
    

    このコマンドは「repodata/repomd.xml.GPG署名のASCIIバージョンを含むasc’のファイル.Repo configのいくつかのオプション構成により、YUMクライアントはこのファイルをアクティブに要求し、この署名を検証しようとします.

    RPMとmetadataの署名認証を可能にする


    GPG keysをよく検証するためには、クライアントで以下のことをしなければなりません.
  • pygpgmeパッケージをインストールする必要があります.これにより、yumはGPG署名を検証できます.このパッケージをインストールしないと、yumはGPG署名の検証をスキップします.このパッケージをインストールするには、EPEL repoをインストールする必要があります.RHEL 6/CentOS 6以降のシステムでは、pygpgmeはyumとともにインストールされます.
  • YUM reposは.repoのファイルが存在し、/etc/yum.repos.d/下、例えば
    /etc/yum.repos.d/my_stuff.repo
    
  • repoファイルでは、以下のオプション
    gpgcheck=1  RPM GPG 
    repo_gpgcheck=1  YUM repo metadata GPG 
    
    で具体的なGPG keysが選択されており、ファイルまたはURLを直接指定することができます.
    gpgkey=https://packagecloud.io/gpg.key
    
    または
      gpgkey=https://packagecloud.io/gpg.key
           https://some-other-website.com/another_gpg.key
    
    のようにURLとして指定すると、YUMクライアントは自動的にインポートをダウンロードします.

  • まとめ


    GPG署名の生成と検証は,パケット自体とストレージパケットのrepoの認証を確立する上で重要である.インストールするパッケージが仕入先提供パッケージであることを確認し、パッケージを取得する倉庫は仕入先提供の倉庫であり、インストールするパッケージが安全であることを保証する唯一の方法です.RPMとYUM repoにGPGを発行し、GPGを検証することは特に簡単ではないが、複雑ではない.あなたのGPGを発行して検証してみましょう.