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/)時,會執行以下步驟:
-
準備憑證:
- 將完整憑證鏈拆成單獨的 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)上傳到容器中的 兩個路徑:
下游服務可以透過固定的 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 角色
在 容器 範圍內授權更符合最小權限原則:
- 在 Azure 門戶 中開啟 Storage Account → Containers,選擇目標容器。
- 進入 Access control (IAM) → Add role assignment。
- 在 Role 標籤頁選擇 Storage Blob Data Contributor。
- 在 Members 標籤頁:
- 將 Assign access to 設為 User, group, or service principal。
- 點選 Select members。
- 按應用註冊的 顯示名稱(例如
AutoSSL)或 Client ID 搜尋。 - 選擇類型為 Application 或 Service principal 的結果,不要選擇使用者帳戶。
- 檢查並完成分配。
如果搜尋不到該應用,開啟 Microsoft Entra ID → Enterprise applications,將 Application type 設為 All applications,確認服務主體存在。新增的主體可能需要幾分鐘才會出現在 IAM 搜尋結果中。
更多說明見 Azure Blob Storage 存取控制文件。
設定儲存帳戶防火牆
AutoSSL 透過公共網際網路連線 Blob Storage。如果儲存帳戶限制了網路存取,即使 RBAC 設定正確,請求也會被拒絕。
- 開啟 Storage Account → Networking → Firewalls and virtual networks。
- 選擇以下之一:
- Enabled from all networks:初始設定和測試時最簡單。
- Enabled from selected networks:在 Address range 中新增 AutoSSL 的出站 IP 地址。
- 儲存更改並重新部署。
如果儲存帳戶只能透過虛擬網路或專用端點存取,除非流量經過相容的網路路徑,否則 AutoSSL 無法從公共網際網路存取它。