4. 环境搭建:安装 Cosign、配置 OIDC 身份提供者、部署 Rekor 实例

本章聚焦于搭建 Sigstore 技术栈的核心运行环境。你将依次完成 Cosign 命令行工具的安装、OIDC 身份提供者的配置,以及 Rekor 透明日志实例的本地部署。这三项是后续实现声明式策略评审与证据发布的基础设施。

前置条件:建议使用 Linux(Ubuntu 22.04+)或 macOS 环境,并已安装 Docker 与 Docker Compose。确保网络可访问 GitHub、Google 等 OIDC 端点。

4.1 安装 Cosign 命令行工具

Cosign 是 Sigstore 生态中最常用的客户端工具,负责签名、验证和与 OIDC 提供者交互。推荐通过官方脚本安装至 /usr/local/bin。

# 下载最新版 Cosign(v2.x)
curl -O -L "https://github.com/sigstore/cosign/releases/latest/download/cosign-linux-amd64"
sudo mv cosign-linux-amd64 /usr/local/bin/cosign
sudo chmod +x /usr/local/bin/cosign

# 验证安装
cosign version

安装完成后,执行 cosign version 应输出类似 GitVersion: v2.4.0 的信息。若需在 CI/CD 流水线中使用,也可通过 go install github.com/sigstore/cosign/v2/cmd/cosign@latest 安装。

关键配置:Cosign 默认使用环境变量 COSIGN_PASSWORD 保护私钥。若使用密钥对模式,请确保该变量已设置。

4.2 配置 OIDC 身份提供者

Sigstore 依赖 OIDC 协议进行身份认证。生产环境通常使用 GitHub、Google 或 GitLab 作为提供者;本地开发可部署 Dex 模拟 OIDC 服务。以下以 GitHub 为例配置 OIDC。

步骤 操作 说明
1 创建 GitHub OAuth App 访问 GitHub Settings → Developer settings → OAuth Apps → New OAuth App
2 填写回调 URL Homepage URL: http://localhost:8080;Authorization callback URL: http://localhost:8080/auth/callback
3 获取 Client ID 与 Secret 记录生成的 CLIENT_ID 和 CLIENT_SECRET
4 配置环境变量 export OIDC_ISSUER=https://github.com/login/oauth

若使用本地 Dex 作为 OIDC 提供者,可通过 Docker Compose 快速启动:

# docker-compose.yml 片段
version: '3'
services:
  dex:
    image: ghcr.io/dexidp/dex:v2.38.0
    ports:
      - "5556:5556"
    volumes:
      - ./dex-config.yaml:/etc/dex/config.yaml
安全提醒:切勿将 Client Secret 提交至版本控制系统。生产环境应使用密钥管理服务(如 Vault)存储敏感凭证。

4.3 部署 Rekor 实例

Rekor 是 Sigstore 的透明日志组件,负责记录所有签名元数据。本地部署 Rekor 用于开发和测试,避免依赖公共 Rekor 实例。推荐使用 Docker Compose 一键部署 Rekor Server + MySQL 后端。

# 克隆 Rekor 仓库
git clone https://github.com/sigstore/rekor.git
cd rekor

# 使用 Docker Compose 启动(包含 rekor-server + rekor-cli + MySQL)
docker-compose -f docker-compose.yml up -d

# 验证服务状态
curl http://localhost:3000/api/v1/log/stable

部署成功后,访问 http://localhost:3000 应返回 Rekor API 响应。Rekor 默认监听 3000 端口,数据持久化至本地 MySQL 容器。

验证命令:使用 rekor-cli 检查日志状态:rekor-cli loginfo --rekor_server http://localhost:3000。输出应包含当前根哈希与树大小。

4.4 环境验证与集成测试

完成上述组件安装后,执行以下端到端验证流程,确保 Cosign、OIDC 与 Rekor 协同工作。

  1. 生成测试密钥对:cosign generate-key-pair
  2. 使用 OIDC 令牌签名:cosign sign --rekor-url=http://localhost:3000 --oidc-issuer=https://github.com/login/oauth <image>
  3. 验证签名并查询 Rekor:cosign verify --rekor-url=http://localhost:3000 <image>
  4. 检查 Rekor 条目:rekor-cli search --rekor_server http://localhost:3000 --sha <digest>

若所有步骤返回成功,则环境搭建完成。后续章节将基于此环境实施准入策略与证据管理。

Sigstore 本地环境搭建架构 Cosign CLI OIDC Provider Rekor Server MySQL 后端 Kubernetes 集群 说明: 1. Cosign 通过 OIDC 协议向 Provider 获取身份令牌。 2. Cosign 将签名元数据提交至 Rekor Server 进行透明日志记录。 3. Rekor Server 使用 MySQL 持久化存储日志条目。 4. Kubernetes 集群通过 Cosign 验证准入策略,并查询 Rekor 获取证据。

4.5 常见问题与排错

问题现象 可能原因 解决方案
Cosign 签名时提示 OIDC 认证失败 Client ID/Secret 配置错误或回调 URL 不匹配 检查 GitHub OAuth App 设置,确保回调 URL 与本地端口一致
Rekor 服务无法启动 MySQL 连接失败或端口冲突 检查 Docker 日志:docker-compose logs rekor-server;确认 3000 端口未被占用
验证签名时返回 404 Rekor 中未找到对应条目 确认签名时使用了正确的 --rekor-url;使用 rekor-cli search 手动查询
最佳实践:建议将 Cosign、Rekor 与 OIDC 配置纳入版本控制(如 GitOps 仓库),并使用 Makefile 或 Taskfile 封装常用命令,便于团队复用。