取得公開金鑰以進行簽章驗證
使用 GPG 公開金鑰來驗證 Continuous Deployment (CD) 管線中已簽署映像檔的簽章。
您可以取得 GPG 公開金鑰,如下所示:
- 使用持續整合 (CI) 管線。
- 使用本端電腦。
使用持續整合 (CI) 管線取得 GPG 公開金鑰
-
若要取得公開金鑰,請在 CI 管線中新增值為 1 的環境變數
print-code-signing-public-key。 執行 CI 管線之後,GPG 公開金鑰會列印在主控台的build-sign-artifact階段中。 然後,您可以執行下列指令,將公開金鑰複製到檔案中,並以 base64 格式將它編碼:cat copied_key.txt | base64 -
將編碼金鑰複製到連續部署 (CD) 管線。
使用本端電腦取得 GPG 公開金鑰
如果您在金鑰環中有 GPG 私密金鑰,則可以直接匯出公開金鑰。
-
請檢查您的機器是否有 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] -
如果 GPG 金鑰存在於電腦上,請執行下列指令來匯出 GPG 公開金鑰:
gpg --armor --export <Email Address> -----BEGIN PGP PUBLIC KEY BLOCK----- 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 ftfswLBW+es4fQ== =0FYC -----END PGP PUBLIC KEY BLOCK----- -
匯出 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
-
在 IBM Cloud 主控台中,選取您要儲存所產生 GPG 金鑰的 Key Protect 實例。
-
按一下 新增 圖示
,以將新的金鑰新增至實例。
-
選取 匯入您自己的金鑰 選項。
-
選取金鑰類型作為 標準金鑰。
-
在 金鑰名稱 欄位中提供適當的名稱。 稍後可以使用此名稱來擷取儲存的 GPG 金鑰。
-
複製您在 金鑰資料 欄位中匯出的金鑰。
當您複製金鑰並在 金鑰資料 欄位中貼上它時,請確定金鑰尾端沒有額外的行。
-
展開 進階選項 區段,並選取 選擇金鑰環 選項作為預設值。
-
按一下 新增金鑰,將金鑰新增至金鑰保護。
將金鑰加入到金鑰保護
如需 Key Protect的相關資訊,請參閱 關於 Key Protect。
將金鑰儲存在 Secrets Manager 中
您必須先單一 base64 編碼 GPG 金鑰,然後再將它儲存在 Secrets Manager 實例中。
-
匯出 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
-
-
在 IBM Cloud 主控台中,選取 Secrets Manager 實例,以儲存您在先前步驟中產生的 GPG 金鑰。
-
按一下 新增 圖示
,以將新的金鑰新增至實例。
-
選取 其他密鑰類型 選項。
其他秘密類型 -
選取金鑰類型作為 標準金鑰。
-
在 名稱 欄位中提供適當的名稱。 稍後可以使用此名稱來擷取儲存的 GPG 金鑰。
-
選擇選項作為 密鑰值,並在 密鑰值 欄位中貼上先前匯出的金鑰。
當您複製金鑰並在 密鑰值 欄位中貼上它時,請確定金鑰尾端沒有額外的行。
-
按一下 新增,將金鑰新增至 Key Protect 實例。
新增密鑰
如需 Secrets Manager的相關資訊,請參閱 開始使用 Secrets Manager。
匯出私密金鑰並直接儲存在 CI 管線中
此方法僅用於測試。 使用 keyprotect 或 secrets 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