8.3. 使用私钥使用 sigstore 签名签名容器镜像


从 Podman 版本 4.2 开始,您可以使用容器签名的 sigstore 格式。

先决条件

  • container-tools 元数据包已安装。

流程

  1. 生成 sigstore 公钥/私钥对:

    $ skopeo generate-sigstore-key --output-prefix myKey
    • 公钥和私钥 myKey.pubmyKey.private 生成了。

      注意

      skopeo generate-sigstore-key 命令可在 RHEL 9.2 中提供。否则,您必须使用上游 Cosign 项目来生成公钥/私钥对:

      • 安装 cosign 工具:

        $ git clone -b v2.0.0 https://github.com/sigstore/cosign
        $ cd cosign
        $ make ./cosign
      • 生成公钥/私钥对:

        $ ./cosign generate-key-pair
        ...
        Private key written to cosign.key
        Public key written to cosign.pub
  2. /etc/containers/registries.d/default.yaml 文件中添加以下内容:

    docker:
        <registry>:
            use-sigstore-attachments: true

    通过设置 use-sigstore-attachments 选项,Podman 和 Skopeo 可以借助镜像读取和写入容器 sigstore 签名,并将它们保存在与签名镜像相同的存储库中。

    注意

    您可以在 /etc/containers/registries.d/default.yaml 文件中编辑系统范围的注册中心配置。您还可以编辑 /etc/containers/registries.d 目录中任何 YAML 文件中的注册中心或存储库配置部分。所有 YAML 文件都是读取的,文件名可以是任意的。单个范围 (default-docker、注册中心或命名空间) 只能存在于 /etc/containers/registries.d 目录中的一个文件中。

  3. 使用 Containerfile 在当前目录中构建容器镜像:

    $ podman build -t <registry>/<namespace>/<image>
  4. 为镜像签名并将其推送到注册中心:

    $ podman push --sign-by-sigstore-private-key ./myKey.private <registry>/<namespace>/image>

    podman push 命令将 <registry>/<namespace>/<image> 本地镜像推送到远程的注册中心作为 <registry>/<namespace>/<image>--sign-by-sigstore-private-key 选项使用 myKey.private 私钥将 sigstore 签名添加到 <registry>/<namespace>/<image> 镜像。镜像和 sigstore 签名将上传到远程注册中心。

注意

如果您需要在容器 registry 间移动现有镜像时为现有镜像签名,您可以使用 skopeo copy 命令。

验证

其他资源

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.