IBM Cloud Docs
获取用于签名验证的公用密钥

获取用于签名验证的公用密钥

使用 GPG 公用密钥来验证 Continuous Deployment (CD) 管道中已签名映像的签名。

您可以获取 GPG 公用密钥,如下所示:

  • 使用持续集成 (CI) 管道。
  • 使用本地计算机。

使用持续集成 (CI) 管道获取 GPG 公用密钥

  1. 要获取公用密钥,请在 CI 管道中添加值为 1 的环境变量 print-code-signing-certificate 。 运行 CI 管道后,将在控制台上的 build-sign-artifact 阶段中打印 GPG 公用密钥。 然后,可以通过运行以下命令将公用密钥复制到文件中并以 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 中

在将 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

将密钥存储在 Secrets Manager 中

必须先对 GPG 密钥进行单个 base64 编码,然后才能将其存储在 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 控制台中,选择要在其中存储在先前步骤中生成的 GPG 密钥的 Secrets Manager 实例。

  3. 单击 添加 图标 "添加" 图标 以向实例添加新密钥。

  4. 选择 其他密钥类型 选项。

    其他私钥类型
    图 2。 其他私钥类型

  5. 选择密钥类型作为 标准密钥

  6. 名称 字段中提供相应的名称。 稍后可以使用此名称来检索存储的 GPG 密钥。

  7. 选择 私钥值 选项,并在 私钥值 字段中粘贴先前导出的密钥。

    复制密钥并将其粘贴到 密钥值 字段中时,请确保密钥末尾没有多余的行。

  8. 通过单击 添加将密钥添加到 Key Protect 实例。

    添加密钥
    图 3。 添加密钥

有关 Secrets Manager的更多信息,请参阅 Secrets Manager入门。

导出专用密钥并将其直接存储在 CI 管道中

仅将此方法用于测试。 使用 keyprotectsecrets manager 来存储密钥。

必须先对 GPG 密钥进行单个 base64 编码,然后才能将其存储为安全管道属性。

将 GPG 密钥安全地存储在 Key Protect 或 Secrets Manager 实例中,如下所示:

  • OS X 或 Linux

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

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