Cloudflare R2
如何把 SSL 证书自动部署到 Cloudflare R2 存储桶。
概览
AutoSSL 可以把 SSL 证书文件自动上传到 Cloudflare R2 存储桶。每张证书都会写入带版本的归档路径,并同步更新 latest/ 路径,方便下游系统(例如 Nginx、Caddy,或从 R2 拉取证书的自定义脚本)获取当前证书。
Cloudflare R2 兼容 S3,并且 不收取出站流量费用,适合以较低成本存储和分发证书。
如何管理和运行此部署,请参见 部署管理。
配置参数
在 AutoSSL 控制台添加或编辑此部署目标时,需要配置以下参数:
| 参数 | 说明 | 示例 |
|---|---|---|
| 账户 ID | Cloudflare 账户 ID。可以在 Cloudflare 控制台 URL 或 Workers & Pages 概览页中找到。 | a1b2c3d4e5f6... |
| 存储桶名称 | 要上传证书文件的 R2 存储桶名称。 | my-ssl-certs |
| 对象键前缀 | (可选) 用于在存储桶中整理证书文件的前缀。设置后,文件会上传到该前缀下。末尾的斜杠可有可无。 | certs/example.com/ |
工作原理
AutoSSL 把证书部署到 Cloudflare R2 存储桶(例如 my-ssl-certs(前缀 certs/example.com/))时,会执行以下步骤:
-
准备证书:
- 将完整证书链拆成单独的 PEM 文件:
cert.pem(叶子证书)、privkey.pem(私钥,PKCS#8 编码)、chain.pem(中间证书链)和fullchain.pem(完整证书链)。 - 生成包含证书元数据的
README.md,并附上 https://autossl.dev 链接,便于追溯。 - 解析证书的
notBefore日期和 SHA1 指纹,生成归档目录名(格式:YYYY-MM-DD_<first 8 chars of SHA1>)。
- 将完整证书链拆成单独的 PEM 文件:
-
上传文件:
- 把证书文件(四个 PEM 文件和 README.md)上传到存储桶中的 两个路径:
- 归档路径 —
certs/example.com/2026-05-30_e5f6a7b8/cert.pem(以及privkey.pem、chain.pem、fullchain.pem、README.md)。每次签发都使用唯一路径,不会被覆盖。 - 最新路径 —
certs/example.com/latest/cert.pem(以及privkey.pem、chain.pem、fullchain.pem、README.md)。此路径始终是最近一次上传的证书。
- 归档路径 —
- 把证书文件(四个 PEM 文件和 README.md)上传到存储桶中的 两个路径:
下游服务可以通过固定的 R2 对象键从 latest/ 路径获取当前证书。历史证书仍保留在各自的版本归档目录中。
存储桶结构示例
多次续期后,存储桶结构类似这样:
certs/example.com/
├── 2026-03-01_a1b2c3d4/
│ ├── cert.pem
│ ├── privkey.pem
│ ├── chain.pem
│ ├── fullchain.pem
│ └── README.md
├── 2026-05-30_e5f6a7b8/
│ ├── cert.pem
│ ├── privkey.pem
│ ├── chain.pem
│ ├── fullchain.pem
│ └── README.md
└── latest/
├── cert.pem
├── privkey.pem
├── chain.pem
├── fullchain.pem
└── README.md私钥格式
privkey.pem 使用 PKCS#8 格式(-----BEGIN PRIVATE KEY-----)。现代 Web 服务器和工具(Nginx、Caddy、Traefik、OpenSSL 1.1+ 等)普遍支持此格式。
如果环境需要 PKCS#1 格式(例如 RSA 密钥的 -----BEGIN RSA PRIVATE KEY-----),请在本地转换后再使用:
openssl rsa -in privkey.pem -out privkey-pkcs1.pem访问密钥要求
要调用 Cloudflare R2 API,此服务商需要 Cloudflare R2 访问密钥。
所需权限
R2 API Token 必须对目标存储桶拥有 Object Read & Write 权限。
创建具备正确权限的 R2 API Token:
- 打开 Cloudflare 控制台 → R2 Object Storage → Manage R2 API Tokens。
- 点击 Create API token。
- 将 Permissions 设为 Object Read & Write。
- (可选)将 Specify bucket(s) 设为目标存储桶名称,把令牌限制到该存储桶。
- 点击 Create API Token,复制 Access Key ID 和 Secret Access Key。
更多说明见 Cloudflare R2 API Token 文档。