强曰为道
与天地相似,故不违。知周乎万物,而道济天下,故不过。旁行而不流,乐天知命,故不忧.
文档目录

Rekor 透明日志完整教程 / 02 - 安装与配置

第 2 章:安装与配置

本章将介绍 Rekor 相关工具的安装方法,包括 rekor-cli 命令行工具、rekor-server 服务端、Docker 容器部署,以及 cosign 签名工具的集成配置。


2.1 组件概览

在开始安装之前,先了解需要安装的各个组件及其用途:

组件类型用途是否必须
rekor-cli命令行工具与 Rekor API 交互、查询日志✅ 推荐
rekor-server服务端运行私有 Rekor 实例私有部署时需要
cosign命令行工具签名和验证容器镜像/文件✅ 推荐
trillian服务端Merkle Tree 后端存储私有部署时需要
fulcio服务端证书颁发机构私有部署时需要

2.2 安装 rekor-cli

rekor-cli 是与 Rekor 透明日志交互的主要命令行工具。

2.2.1 macOS 安装(Homebrew)

# 通过 Sigstore 官方 tap 安装
brew install sigstore/tap/rekor-cli

# 验证安装
rekor-cli version
# 预期输出示例:
# GitVersion:    v1.3.6
# GitCommit:     <commit_hash>
# GitTreeState:  clean
# BuildDate:     <build_date>
# GoVersion:     go1.22.0
# Compiler:      gc
# Platform:      darwin/arm64

2.2.2 Linux 安装(二进制下载)

# 设置版本变量(请检查最新版本)
REKOR_VERSION="v1.3.6"
OS="linux"
ARCH="amd64"

# 下载 rekor-cli 二进制文件
curl -LO "https://github.com/sigstore/rekor/releases/download/${REKOR_VERSION}/rekor-cli-${OS}-${ARCH}"

# 移动到 PATH 目录并添加执行权限
sudo mv "rekor-cli-${OS}-${ARCH}" /usr/local/bin/rekor-cli
sudo chmod +x /usr/local/bin/rekor-cli

# 验证安装
rekor-cli version

2.2.3 Linux 安装(ARM64)

REKOR_VERSION="v1.3.6"
curl -LO "https://github.com/sigstore/rekor/releases/download/${REKOR_VERSION}/rekor-cli-linux-arm64"
sudo mv rekor-cli-linux-arm64 /usr/local/bin/rekor-cli
sudo chmod +x /usr/local/bin/rekor-cli
rekor-cli version

2.2.4 Windows 安装

# 使用 winget(推荐)
winget install Sigstore.Rekor

# 或者手动下载
# 1. 访问 https://github.com/sigstore/releases/releases
# 2. 下载 rekor-cli-windows-amd64.exe
# 3. 将文件重命名为 rekor-cli.exe 并添加到 PATH

2.2.5 从源码编译

# 前置条件:Go 1.22+
git clone https://github.com/sigstore/rekor.git
cd rekor

# 编译 rekor-cli
go build -o rekor-cli ./cmd/rekor-cli

# 移动到 PATH
sudo mv rekor-cli /usr/local/bin/

# 验证
rekor-cli version

2.2.6 验证安装完整性

下载后建议验证二进制文件的 checksum:

# 下载 checksum 文件
curl -LO "https://github.com/sigstore/rekor/releases/download/${REKOR_VERSION}/rekor_checksums.txt"

# 验证 checksum
sha256sum --check --ignore-missing rekor_checksums.txt

# 预期输出:
# rekor-cli-linux-amd64: OK

2.3 安装 cosign

cosign 是 Sigstore 生态中的签名和验证工具,与 Rekor 紧密集成。

2.3.1 macOS 安装

brew install cosign

# 验证安装
cosign version
# 预期输出示例:
#   ______   ______        _______. __    _______ .__   __.
#  /      | /  __  \      /       ||  |  /       ||  \ |  |
# |  ,----'|  |  |  |    |   (----`|  | |   (----`|   \|  |
# |  |     |  |  |  |     \   \    |  |  \   \    |  . `  |
# |  `----.|  `--'  | .----)   |   |  | .----)   |  |\   |
#  \______| \______/  |_______/    |__| |_______/|__| \__|
#
# cosign: Signing container images and other artifacts
# GitVersion:    v2.4.1

2.3.2 Linux 安装

COSIGN_VERSION="v2.4.1"
curl -LO "https://github.com/sigstore/cosign/releases/download/${COSIGN_VERSION}/cosign-linux-amd64"
sudo mv cosign-linux-amd64 /usr/local/bin/cosign
sudo chmod +x /usr/local/bin/cosign
cosign version

2.3.3 验证 cosign 安装

# 测试与公共 Rekor 服务器的连接
cosign initialize

# 预期输出:
# Root status:
#  - CTFE public key: <hash>
#  - Rekor public key: <hash>
#  - Fulcio certificate: <hash>
# No TUF root available, using embedded root
# Sigstore root status updated to latest

2.4 Rekor 服务器安装

如果你需要运行私有 Rekor 实例(例如在企业内网中),需要安装 rekor-server。

2.4.1 从源码编译

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

# 编译 rekor-server
go build -o rekor-server ./cmd/rekor-server

# 验证
./rekor-server version

2.4.2 预编译二进制

REKOR_VERSION="v1.3.6"
curl -LO "https://github.com/sigstore/rekor/releases/download/${REKOR_VERSION}/rekor-server-linux-amd64"
sudo mv rekor-server-linux-amd64 /usr/local/bin/rekor-server
sudo chmod +x /usr/local/bin/rekor-server

2.4.3 服务端依赖

rekor-server 需要以下后端服务:

依赖用途推荐版本
TrillianMerkle Tree 存储后端v1.6.x
MySQL / PostgreSQLTrillian 数据库MySQL 8.0+ / PostgreSQL 14+
Redis(可选)缓存和速率限制Redis 7.x

2.5 Docker 安装

使用 Docker 是运行 Rekor 最便捷的方式,特别适合本地开发和测试。

2.5.1 拉取官方镜像

# 拉取 rekor-server 镜像
docker pull gcr.io/projectsigstore/rekor-server:v1.3.6

# 拉取 rekor-cli 镜像
docker pull gcr.io/projectsigstore/rekor-cli:v1.3.6

# 查看镜像
docker images | grep rekor

2.5.2 快速启动(单容器测试)

# 使用 docker run 启动一个测试实例
# 注意:生产环境请使用 Docker Compose(见第 9 章)
docker run --rm -p 3000:3000 \
  gcr.io/projectsigstore/rekor-server:v1.3.6 \
  serve \
  --trillian_log_server.address=localhost \
  --trillian_log_server.port=8090 \
  --redis_server.address=redis

注意:单独运行 rekor-server 不够,它依赖 Trillian 和数据库。完整的 Docker Compose 部署请参见 第 9 章

2.5.3 使用 Docker 运行 rekor-cli

# 通过 Docker 运行 rekor-cli 查询公共 Rekor 服务
docker run --rm gcr.io/projectsigstore/rekor-cli:v1.3.6 \
  --rekor_server=https://rekor.sigstore.dev \
  loginfo

2.6 密钥配置

2.6.1 生成签名密钥对

使用 cosign 生成用于签名的密钥对:

# 生成密钥对(会提示输入密码)
cosign generate-key-pair

# 预期输出:
# Enter password for private key:
# Enter again:
# Private key written to cosign.key
# Public key written to cosign.pub

生成的文件:

文件说明
cosign.key私钥文件(PEM 格式,使用密码加密)
cosign.pub公钥文件(PEM 格式,用于验证)

2.6.2 查看生成的密钥

# 查看公钥内容
cat cosign.pub

# 预期输出(类似):
# -----BEGIN PUBLIC KEY-----
# MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE...
# -----END PUBLIC KEY-----

2.6.3 密钥存储最佳实践

存储方式安全级别适用场景
本地文件系统⭐⭐个人开发、测试
环境变量⭐⭐CI/CD 流水线(配合 Secret Manager)
HashiCorp Vault⭐⭐⭐⭐企业级密钥管理
云 KMS(AWS/GCP/Azure)⭐⭐⭐⭐⭐企业生产环境
Kubernetes Secrets⭐⭐⭐K8s 环境(需配合 RBAC)

2.6.4 使用环境变量传递密钥密码

# 设置环境变量(避免在命令行中明文输入)
export COSIGN_PASSWORD="your-secure-password"

# 非交互式签名
cosign sign --key cosign.key --yes \
  --tlog-upload=true \
  example-registry.io/image:tag

2.6.5 无密钥签名(Keyless)

使用 Sigstore 的无密钥签名模式,无需管理长期密钥:

# 无密钥签名(需要浏览器进行 OIDC 认证)
cosign sign --yes \
  example-registry.io/image:tag

# CI/CD 环境中使用(自动检测 OIDC 环境)
# GitHub Actions
cosign sign --yes \
  --identity-token=$ACTIONS_ID_TOKEN_REQUEST_URL \
  example-registry.io/image:tag

无密钥签名流程:cosign 会自动向 Fulcio 请求短期证书,用临时密钥签名,然后将签名记录到 Rekor。整个过程无需手动管理任何密钥。


2.7 环境变量配置

2.7.1 rekor-cli 环境变量

环境变量说明默认值
REKOR_SERVERRekor 服务器地址https://rekor.sigstore.dev
REKOR_FORMAT输出格式json
REKOR_LOG_LEVEL日志级别info
# 设置使用自定义 Rekor 服务器
export REKOR_SERVER=https://rekor.example.com

# 设置输出格式为 JSON
export REKOR_FORMAT=json

2.7.2 cosign 环境变量

环境变量说明
COSIGN_PASSWORD私钥密码
COSIGN_REPOSITORY签名存储仓库
COSIGN_REKOR_URLRekor 服务器地址
COSIGN_FULCIO_URLFulcio 服务器地址
COSIGN_OIDC_ISSUEROIDC 颁发者 URL
COSIGN_EXPERIMENTAL启用无密钥签名(1

2.7.3 配置文件

rekor-cli 和 cosign 支持通过配置文件设置默认参数:

# 创建配置目录
mkdir -p ~/.config/rekor

# 创建 rekor-cli 配置
cat > ~/.config/rekor/config.yaml << 'EOF'
rekor_server: https://rekor.sigstore.dev
format: json
log_level: info
EOF

2.8 连接公共 Rekor 实例

2.8.1 公共实例信息

参数
API 地址https://rekor.sigstore.dev
API 版本v1
Swagger 文档https://rekor.sigstore.dev/api/v1/swagger.json
日志 ID通过 rekor-cli loginfo 获取

2.8.2 测试连接

# 测试与公共 Rekor 的连接
rekor-cli loginfo --rekor_server=https://rekor.sigstore.dev

# 使用 curl 直接测试 API
curl -s https://rekor.sigstore.dev/api/v1/log | head -c 200

# 查看 API 版本
curl -s https://rekor.sigstore.dev/api/v1/version

2.8.3 网络代理配置

如果在企业内网需要通过代理访问:

# 设置 HTTP 代理
export HTTP_PROXY=http://proxy.example.com:8080
export HTTPS_PROXY=http://proxy.example.com:8080

# 或者在命令行中指定
rekor-cli loginfo --rekor_server=https://rekor.sigstore.dev

# cosign 代理配置
export COSIGN_REKOR_URL=https://rekor.sigstore.dev

2.9 故障排除

2.9.1 常见安装问题

问题原因解决方案
command not found: rekor-cli未在 PATH 中检查 /usr/local/bin 是否在 $PATH
permission denied无执行权限执行 chmod +x /usr/local/bin/rekor-cli
certificate verify failedSSL 证书问题检查系统 CA 证书,或设置 --rekor_server 为 HTTP
connection refused网络不通检查防火墙和代理设置
dial tcp: lookup rekor.sigstore.devDNS 解析失败检查 DNS 配置

2.9.2 诊断命令

# 检查 rekor-cli 安装路径
which rekor-cli

# 检查版本
rekor-cli version

# 检查网络连接
curl -v https://rekor.sigstore.dev/api/v1/log 2>&1 | head -20

# 检查 DNS 解析
nslookup rekor.sigstore.dev

# 使用详细日志级别
rekor-cli loginfo --log_level=debug

2.9.3 cosign 初始化失败

# 如果 cosign initialize 失败,尝试手动设置 TUF root
cosign initialize --mirror=https://tuf-repo-cdn.sigstore.dev

# 清除本地 TUF 缓存后重试
rm -rf ~/.sigstore/root
cosign initialize

2.10 本章小结

任务命令 / 位置
安装 rekor-clibrew install sigstore/tap/rekor-cli 或下载二进制
安装 cosignbrew install cosign 或下载二进制
生成密钥对cosign generate-key-pair
测试连接rekor-cli loginfo
设置服务器地址export REKOR_SERVER=https://rekor.sigstore.dev
Docker 拉取docker pull gcr.io/projectsigstore/rekor-server:v1.3.6

扩展阅读


下一章03 - 基本操作 — 学习如何创建条目、查询日志、验证包含证明。