IBM Cloud Docs
署名検証のための公開鍵の取得

署名検証のための公開鍵の取得

GPG 公開鍵を使用して、継続的デプロイメント (CD) パイプラインで署名されたイメージの署名を検証します。

GPG 公開鍵は、以下のようにして取得できます。

  • 継続的統合 (CI) パイプラインを使用する。
  • ローカル・コンピューターを使用する。

継続的統合 (CI) パイプラインを使用した GPG 公開鍵の取得

  1. 公開鍵を取得するには、CI パイプラインに環境変数 print-code-signing-certificate を値 1 で追加します。 CI パイプラインを実行すると、GPG 公開鍵が build-sign-artifact ステージのコンソールに出力されます。 その後、以下のコマンドを実行して、公開鍵をファイルにコピーし、 base64 形式でエンコードすることができます。

    cat copied_key.txt | base64
    
  2. エンコードされた鍵を継続的デプロイメント (CD) パイプラインにコピーします。

ローカル・コンピューターを使用した GPG 公開鍵の取得

鍵リングに GPG 秘密鍵がある場合は、公開鍵を直接エクスポートできます。

  1. マシンに GPG 鍵リングがあるかどうかを確認します。 鍵リングは、それらのグループ化を独立して管理できるようにする鍵のグループ化です。 詳しくは、 鍵リングを使用した鍵のグループ化を参照してください。 以下のコマンドを実行します。

     gpg --list-keys
    
    /home/user/.gnupg/pubring.kbx
    -------------------------------
    pub   rsa3072 2021-04-15 [SC] [expires: 2023-04-15]
          88DC11E8FDDF028F02E4184719D6C4C5990F144F
    uid           [ unknown] user name <user.name@email.com>
    sub   rsa3072 2021-04-15 [E] [expires: 2023-04-15]
    
  2. ご使用のコンピューターに GPG 鍵が存在する場合は、以下のコマンドを実行して GPG 公開鍵をエクスポートします。

    gpg --armor --export  <Email Address>
    
    
        -----BEGIN PGP PUBLIC KEY BLOCK-----
        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
        ftfswLBW+es4fQ==
        =0FYC
        -----END PGP PUBLIC KEY BLOCK-----
    
  3. GPG 公開鍵をエクスポートした後、 base64 形式でエンコードしてから、 code-signing-certificate フィールドにコピーします。

鍵の保管

以下のいずれかの方法で、GPG キーを CD パイプラインに提供します。

  • 鍵を IBM® Key Protect for IBM Cloud®に保管します。
  • 鍵を IBM Cloud® Secrets Managerに保管します。
  • CI ツールチェーンにキーを直接保管します。

CI パイプラインの署名エラーを回避するために、鍵が正しい形式でコピーされていることを確認してください。 以下のセクションで指定するコマンドで pbcopy (OS X) または clip (Windows Git bash) を使用して、キーの内容をクリップボードにコピーします。

Key Protect への鍵の保管

GPG 鍵を Key Protect インスタンスに保管する前に、 base64 エンコードする必要があります。

以下のようにして、GPG キーをクリップボードにエクスポートおよびコピーします。

  • OS X

    gpg --armor --export <Email Address> | base64 | base64 | pbcopy
    
  • windows

    gpg --armor --export <Email Address> | base64 -w0 | base64 -w0 | clip
    
  • Linux

    gpg --armor --export <Email Address> | base64 | base64
    
  1. IBM Cloud コンソールで、生成した GPG 鍵の保管先となる Key Protect インスタンスを選択します。

  2. 「追加」 アイコン 「追加」アイコン をクリックして、新しい鍵をインスタンスに追加します。

  3. 「独自の鍵のインポート」 オプションを選択します。

  4. 鍵タイプとして **「標準鍵」**を選択します。

  5. キー名 」フィールドに適切な名前を指定します。 保管された GPG キーは、この名前を使用して後で取得できます。

  6. 鍵素材 」フィールドにエクスポートした鍵をコピーします。

    鍵をコピーして 「鍵素材」 フィールドに貼り付けるときに、鍵の末尾に余分な行がないことを確認してください。

  7. 「拡張オプション」 セクションを展開し、デフォルトとして 「鍵リングの選択」 オプションを選択します。

  8. **「鍵の追加」**をクリックして、鍵を鍵保護に追加します。

    鍵を追加して鍵を保護します
    図 1. Key Protect への鍵の追加

Key Protectについて詳しくは、 Key Protectについてを参照してください。

Secrets Manager への鍵の保管

GPG 鍵を Secrets Manager インスタンスに保管する前に、単一の base64 エンコードする必要があります。

  1. GPG 鍵をエクスポートしてクリップボードにコピーします。

    • OS X

      gpg --armor --export <Email Address> | base64 | pbcopy
      
    • windows

      gpg --armor --export <Email Address> | base64 -w0 | clip
      
    • Linux

      gpg --armor --export <Email Address> | base64
      
  2. IBM Cloud コンソールで、前のステップで生成した GPG キーの保管先となる Secrets Manager インスタンスを選択します。

  3. 「追加」 アイコン 「追加」アイコン をクリックして、新しい鍵をインスタンスに追加します。

  4. 「その他のシークレット・タイプ」 オプションを選択します。

    その他のシークレット・タイプ
    図 2. その他のシークレット・タイプ

  5. 鍵タイプとして **「標準鍵」**を選択します。

  6. 「名前」 フィールドに適切な名前を指定します。 保管された GPG キーは、この名前を使用して後で取得できます。

  7. オプションとして 「秘密鍵の値」 を選択し、前にエクスポートした鍵を 「秘密鍵の値」 フィールドに貼り付けます。

    鍵をコピーして 「秘密値」 フィールドに貼り付けるときに、鍵の末尾に余分な行がないことを確認してください。

  8. **「追加」**をクリックして、 Key Protect インスタンスに鍵を追加します。

    キーを追加します
    図 3. キー
    を追加します。

Secrets Manager について詳しくは、Secrets Manager の概要を参照してください。

秘密鍵をエクスポートして CI パイプラインに直接保管する

この方法は、テストにのみ使用してください。 鍵を保管するには、 keyprotect または secrets manager を使用します。

GPG 鍵を保護されたパイプライン・プロパティーとして保管する前に、単一の base64 で GPG 鍵をエンコードする必要があります。

以下のようにして、GPG 鍵を Key Protect または Secrets Manager インスタンスに安全に保管します。

  • OS X または Linux

    gpg --armor --export <Email Address> | base64
    
  • windows

    gpg --armor --export <Email Address> | base64 -w0