取得公開金鑰以進行簽章驗證

使用 GPG 公開金鑰來驗證 Continuous Deployment (CD) 管線中已簽署映像檔的簽章。

您可以取得 GPG 公開金鑰,如下所示:

  • 使用持續整合 (CI) 管線。
  • 使用本端電腦。

使用持續整合 (CI) 管線取得 GPG 公開金鑰

  1. 若要取得公開金鑰,請在 CI 管線中新增值為 1 的環境變數 print-code-signing-public-key。 執行 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 欄位。

儲存金鑰

以下列其中一種方式提供 CD 管線的 GPG 金鑰:

  • 將金鑰儲存在 IBM® Key Protect for IBM Cloud®中。
  • 將金鑰儲存在 IBM Cloud® Secrets Manager中。
  • 將金鑰直接儲存在 CI 工具鏈中。

請確保以正確的格式複製金鑰,以防止發生 CI 管線簽署錯誤。 在下列各節指定的指令中使用 pbcopy (OS X) 或 clip (Windows Git Bash),將金鑰內容複製到剪貼簿。

將金鑰儲存在 Key Protect 中

在 Key Protect 實例中儲存 GPG 金鑰之前,您必須先對 GPG 金鑰進行雙重 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. 按一下 新增金鑰,將金鑰新增至金鑰保護。

    將金鑰加入到金鑰保護
    將金鑰加入到金鑰保護

如需 Key Protect的相關資訊,請參閱 關於 Key Protect

將金鑰儲存在 Secrets Manager 中

您必須先單一 base64 編碼 GPG 金鑰,然後再將它儲存在 Secrets Manager 實例中。

  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 主控台中,選取 Secrets Manager 實例,以儲存您在先前步驟中產生的 GPG 金鑰。

  3. 按一下 新增 圖示 「新增」圖示,以將新的金鑰新增至實例。

  4. 選取 其他密鑰類型 選項。

    其他秘密類型
    其他秘密類型

  5. 選取金鑰類型作為 標準金鑰

  6. 名稱 欄位中提供適當的名稱。 稍後可以使用此名稱來擷取儲存的 GPG 金鑰。

  7. 選擇選項作為 密鑰值,並在 密鑰值 欄位中貼上先前匯出的金鑰。

    當您複製金鑰並在 密鑰值 欄位中貼上它時,請確定金鑰尾端沒有額外的行。

  8. 按一下 新增,將金鑰新增至 Key Protect 實例。

    新增密鑰
    新增密鑰

如需 Secrets Manager的相關資訊,請參閱 開始使用 Secrets Manager

匯出私密金鑰並直接儲存在 CI 管線中

此方法僅用於測試。 使用 keyprotectsecrets manager 來儲存金鑰。

在將 GPG 金鑰儲存為安全管線內容之前,您必須先對 GPG 金鑰進行單一 base64 編碼。

將 GPG 金鑰安全地儲存在 Key Protect 或 Secrets Manager 實例中,如下所示:

  • OS X 或 Linux

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

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