AutoSSL
証明書のデプロイ

Azure Blob Storage

SSL 証明書を Azure Blob Storage コンテナーへ自動デプロイする方法です。

概要

AutoSSL は、SSL 証明書のファイルを Azure Blob Storage のコンテナーへ自動でアップロードできます。各証明書はバージョン付きのアーカイブパスに保存され、あわせて latest/ パスも更新されます。Nginx、Caddy、Blob Storage から証明書を取得する独自スクリプトなどの後続処理が、最新の証明書を見つけやすくなります。

このデプロイの管理と実行は、デプロイ管理 を参照してください。

設定パラメーター

AutoSSL コンソールでこのデプロイ先を追加または編集するときは、次のパラメーターを設定します。

パラメーター説明例
ストレージアカウント名BLOB コンテナーをホストする Azure Storage アカウントの名前です。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. ファイルのアップロード:

    • 4 つの PEM ファイルと README.md を、コンテナー内の 2 つのパス にアップロードします。
      • アーカイブパス — 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)。常に最後にアップロードした証明書です。

latest/ パスを使うと、後続のサービスは決まった BLOB 名から現在の証明書を取得できます。過去の証明書は、バージョン付きのアーカイブディレクトリに残ります。

コンテナー構成の例

証明書を複数回更新したあとのコンテナーは、次のようになります。

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-----)です。Nginx、Caddy、Traefik、OpenSSL 1.1+ など、近年の Web サーバーやツールで広く使えます。

環境が 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 Portal で 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 access control documentation を参照してください。

ストレージアカウントのファイアウォールを設定する

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