搜索

10.3. Cosign OCI 支持

download PDF

Cosign 是一个可用于签署和验证容器镜像的工具。它使用 ECDSA-P256 签名算法和 Red Hat 简单签名有效负载格式来创建存储在 PKIX 文件中的公钥。私钥存储为加密的 PEM 文件。

Cosign 目前支持以下内容:

  • 硬件和 KMS 签名
  • bring-your-own PKI
  • OIDC PKI
  • 内置二进制透明度和时间戳服务

使用以下步骤直接安装 Cosign。

先决条件

  • 已安装 Go 版本 1.16 或更高版本。
  • 您已在 config.yaml 文件中将 FEATURE_GENERAL_OCI_SUPPORT 设置为 true

流程

  1. 输入以下 go 命令直接安装 Cosign:

    $ go install github.com/sigstore/cosign/cmd/cosign@v1.0.0

    输出示例

    go: downloading github.com/sigstore/cosign v1.0.0
    go: downloading github.com/peterbourgon/ff/v3 v3.1.0

  2. 输入以下命令为 Cosign 生成键值对:

    $ cosign generate-key-pair

    输出示例

    Enter password for private key:
    Enter again:
    Private key written to cosign.key
    Public key written to cosign.pub

  3. 输入以下命令为键值对签名:

    $ cosign sign -key cosign.key quay-server.example.com/user1/busybox:test

    输出示例

    Enter password for private key:
    Pushing signature to: quay-server.example.com/user1/busybox:sha256-ff13b8f6f289b92ec2913fa57c5dd0a874c3a7f8f149aabee50e3d01546473e3.sig

    如果您遇到 错误: signing quay-server.example.com/user1/busybox:test: getting remote image: GET https://quay-server.example.com/v2/user1/busybox/manifests/test: UNAUTHORIZED: access to the requested resource is not authorized; map[] error,因为 Cosign 依赖于 ~./docker/config.json 用于授权,您可能需要执行以下命令:

    $ podman login --authfile ~/.docker/config.json quay-server.example.com

    输出示例

    Username:
    Password:
    Login Succeeded!

  4. 输入以下命令查看更新的授权配置:

    $ cat ~/.docker/config.json
    {
    	"auths": {
    		"quay-server.example.com": {
    			"auth": "cXVheWFkbWluOnBhc3N3b3Jk"
    		}
    	}
Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

© 2024 Red Hat, Inc.