4. 环境搭建:安装 Cosign、配置 OIDC 身份提供者、部署 Rekor 实例
本章聚焦于搭建 Sigstore 技术栈的核心运行环境。你将依次完成 Cosign 命令行工具的安装、OIDC 身份提供者的配置,以及 Rekor 透明日志实例的本地部署。这三项是后续实现声明式策略评审与证据发布的基础设施。
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_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
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 协同工作。
- 生成测试密钥对:
cosign generate-key-pair - 使用 OIDC 令牌签名:
cosign sign --rekor-url=http://localhost:3000 --oidc-issuer=https://github.com/login/oauth <image> - 验证签名并查询 Rekor:
cosign verify --rekor-url=http://localhost:3000 <image> - 检查 Rekor 条目:
rekor-cli search --rekor_server http://localhost:3000 --sha <digest>
若所有步骤返回成功,则环境搭建完成。后续章节将基于此环境实施准入策略与证据管理。
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 手动查询 |