AutoSSL
部署证书

Azure Blob Storage

如何把 SSL 证书自动部署到 Azure Blob Storage 容器。

概览

AutoSSL 可以把 SSL 证书文件自动上传到 Azure Blob Storage 容器。每张证书都会写入带版本的归档路径,并同步更新 latest/ 路径,方便下游系统(例如 Nginx、Caddy,或从 Blob Storage 拉取证书的自定义脚本)获取当前证书。

如何管理和运行此部署,请参见 部署管理。

配置参数

在 AutoSSL 控制台添加或编辑此部署目标时,需要配置以下参数:

参数说明示例
存储账户名称托管该 Blob 容器的 Azure 存储账户名称。mystorageaccount
容器名称要上传证书文件的 Blob 容器名称。ssl-certs
Blob 名称前缀(可选) 用于在容器中整理证书文件的前缀。设置后,文件会上传到该前缀下。末尾的斜杠可有可无。certs/example.com/

工作原理

AutoSSL 把证书部署到 Blob 容器(例如存储账户 mystorageaccount、容器 ssl-certs、前缀 certs/example.com/)时,会执行以下步骤:

  1. 准备证书:

    • 将完整证书链拆成单独的 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>)。
  2. 上传文件:

    • 把证书文件(四个 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)。此路径始终是最近一次上传的证书。

下游服务可以通过固定的 Blob 名称从 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

访问密钥要求

要访问 Azure Blob Storage,此服务商需要 Azure 服务主体。

所需权限

服务主体必须有权在目标容器中创建和覆盖 Blob。请在存储账户或容器范围内分配以下 数据平面 RBAC 角色:

  • Storage Blob Data Contributor(建议)

Storage Account Contributor 这类控制平面角色并不能授予上传 Blob 的权限。如果部署失败并提示 This request is not authorized to perform this operation,请同时检查下面的 RBAC 角色分配和存储账户防火墙设置。

分配 RBAC 角色

在 容器 范围内授权更符合最小权限原则:

  1. 在 Azure 门户 中打开 Storage Account → Containers,选择目标容器。
  2. 进入 Access control (IAM) → Add role assignment。
  3. 在 Role 标签页选择 Storage Blob Data Contributor。
  4. 在 Members 标签页:
    • 将 Assign access to 设为 User, group, or service principal。
    • 点击 Select members。
    • 按应用注册的 显示名称(例如 AutoSSL)或 Client ID 搜索。
    • 选择类型为 Application 或 Service principal 的结果,不要选择用户账户。
  5. 检查并完成分配。

如果搜索不到该应用,打开 Microsoft Entra ID → Enterprise applications,将 Application type 设为 All applications,确认服务主体存在。新建的主体可能需要几分钟才会出现在 IAM 搜索结果中。

更多说明见 Azure Blob Storage 访问控制文档。

配置存储账户防火墙

AutoSSL 通过公共互联网连接 Blob Storage。如果存储账户限制了网络访问,即使 RBAC 配置正确,请求也会被拒绝。

  1. 打开 Storage Account → Networking → Firewalls and virtual networks。
  2. 选择以下之一:
    • Enabled from all networks:初始配置和测试时最简单。
    • Enabled from selected networks:在 Address range 中添加 AutoSSL 的出站 IP 地址。
  3. 保存更改并重新部署。

如果存储账户只能通过虚拟网络或专用终结点访问,除非流量经过兼容的网络路径,否则 AutoSSL 无法从公共互联网访问它。

Azure Blob Storage | AutoSSL