Skip to main content

离线验证证明

可以在没有互联网连接的情况下验证工件声明。

先决条件

在开始本指南之前,应该为你的生成生成项目证明。 请参阅“使用项目证明确立生成的来源”。

步骤 1:下载证明捆绑包

首先,从证明 API 中获取证明捆绑包。

可以使用在线计算机的以下命令执行此操作:

Bash
gh attestation download PATH/TO/YOUR/BUILD/ARTIFACT-BINARY -R ORGANIZATION_NAME/REPOSITORY_NAME

该命令的输出如下所示:

Wrote attestations to file sha256:ae57936def59bc4c75edd3a837d89bcefc6d3a5e31d55a6fa7a71624f92c3c3b.jsonl.
Any previous content has been overwritten

The trusted metadata is now available at sha256:ae57936def59bc4c75edd3a837d89bcefc6d3a5e31d55a6fa7a71624f92c3c3b.jsonl

步骤 2:下载受信任的根证书

接着,从受信任根获取关键材料。

项目认证在公共存储库中使用 Sigstore 公益实例,在私有存储库中使用 GitHub 的 Sigstore 实例。 可以使用一个命令来获取两个受信任的根证书。

Bash
gh attestation trusted-root > trusted_root.jsonl

在离线环境中更新受信任的根信息

最佳做法是在将新签名内容导入离线环境时,生成新的 trusted_root.jsonl 文件。

          `trusted_root.jsonl` 中的密钥内容没有内置的期满日,因此在生成受信任的根文件之前签名的任何内容将继续成功验证。 生成文件后签名的任何内容都将验证,直到 Sigstore 实例轮换其密钥材料,这通常会每年发生多次。 你不知道自上次生成受信任的根文件以来是否已撤销密钥内容。

步骤 3:执行离线验证

现在,你已准备离线验证工件。

应导入到离线环境中:

  • GitHub CLI
  • 你的工件
  • 捆绑包文件
  • 受信任的根文件

然后,可以使用以下命令执行离线验证:

Bash
gh attestation verify PATH/TO/YOUR/BUILD/ARTIFACT-BINARY -R ORGANIZATION_NAME/REPOSITORY_NAME --bundle sha256:ae57936def59bc4c75edd3a837d89bcefc6d3a5e31d55a6fa7a71624f92c3c3b.jsonl --custom-trusted-root trusted_root.jsonl