Azure Key Vault+AZ ACME(新規、自動更新)
本マニュアルは手順をご案内するものです。本マニュアルの内容に基づき生じた結果や影響について、弊社は一切の責任を負いかねますので、あらかじめご了承ください。
弊社では、お客様がご利用になるウェブサーバアプリケーションやツール等に関する仕様、本マニュアルに記載のないその他詳細な設定手順、不具合などのサポートは行っておりません。各製品の開発元またはサービス提供元へお問い合わせください。
OpenSSL、Apache、nginxなど明確なお問い合わせ先のないオープンソースのアプリケーションの設定や不具合については、お客様の責任においてご対応くださいますようお願いいたします。
オープンソースのアプリケーションを利用する場合は脆弱性などの問題がないか随時情報を確認いただき、万一問題が発見された場合は該当サービスの停止や対応パッチを適用するなど、運用には十分ご注意ください。
概要
本ページでは、Azure Key Vault と GlobalSign Atlas SSL を ACME プロトコル(az-acme CLI) で連携し、
証明書の自動発行・更新を行う手順と注意点を説明します。
本手順では DNS-01 チャレンジ(Azure DNS) を使用します。
対象読者
-
Azure Key Vault を利用している管理者
-
GlobalSign Atlas SSL を ACME で利用したい方
-
Azure CLI / サービスプリンシパルの基本知識がある方
全体構成
-
前提条件
-
Azure CLI / az-acme の準備
-
Azure 側の権限設定
-
Atlas ACME アカウント登録(EAB)
-
証明書の発行・更新
-
よくあるエラーと対処
-
注意事項・制限事項
1. 前提条件
必須条件
-
Azure サブスクリプション
-
Azure Key Vault 作成済み
-
Azure DNS ゾーン管理権限
-
GlobalSign Atlas SSL(ACME 有効)
-
EAB(External Account Binding)情報
-
EAB KID
-
EAB HMAC Key
-
AZ ACMEのインストール
- https://azacme.dev/からAZ ACMEを取得しインストールしてください。
※Azure CLI はインストール場所を選択できず以下にインストールが行われます。 -
64bit Windows
C:\Program Files\Microsoft SDKs\Azure\CLI2 -
32bit Windows
C:\Program Files (x86)\Microsoft SDKs\Azure\CLI2
※AZ ACMEインストール時にWindowsのSmartScreenが表示されますので、「実行」ボタンをクリックします。
※動作や安全性を保証するものではございません。ご理解のうえご利用くださ
3. Azure 側の権限設定
各コマンドの詳細についてはこちらをご参照ください。
Azure へログイン
ターミナルを開き、以下コマンドを入力します。
az login
4. Atlas ACME アカウント登録(EAB)
注意事項
-
EAB KID / HMAC Key は機密情報です
-
クリアテキスト保存は非推奨
-
環境変数または Key Vault シークレットの利用を推奨
ACME MACの取得方法について :: GlobalSign Atlas Documentation
API 認証情報(API Credentials)の取得方法について:: GlobalSign Atlas Documentation
下記コマンドを実施いただき、アカウントの紐づけを行います。
.\az-acme.exe register --server https://emea.acme.atlas.globalsign.com/directory --key-vault-uri https://<KeyVault名>.vault.azure.net/ --account-secret az-acme-registration --email <メールアドレス> --eab-kid <APIキー> --eab-hmac-key <ACME MAC> --agree-tos
成功時、新しい Key Vault シークレット が生成されます。
※--account-secretで指定した値のシークレットが生成されます。

次に、パラメーターを使用して Azure Key Vault から環境変数を特定のシークレットにマップする方法を示します。
--env-from-secrets
※--env-from-secretsの値はAzureのキーコンテナーから取得可能です。
-----BEGIN EC PRIVATE KEY-----
-----END EC PRIVATE KEY-----
を省いた値となります。


上記手順で取得したシークレット値を元に以下コマンドを実行します。
.\az-acme.exe register --server https://emea.acme.atlas.globalsign.com/directory --key-vault-uri https://<KeyVault名>.vault.azure.net/ --account-secret acme-registration --email <メールアドレス> --env-from-secrets <シークレット値> --agree-tos az-acme
5. 証明書の発行・更新
動作仕様
-
証明書が存在しない場合 → 新規発行
-
証明書の有効期限が指定日数以内 → 自動更新
-
既定値:30日
-
--renew-within-daysで指定可能
-
証明書発行コマンド(Atlas SSL)
PS C:\AZACME> .\az-acme.exe order --server https://emea.acme.atlas.globalsign.com/directory --key-vault-uri https://<KeyVault名>.vault.azure.net/ --certificate <証明書名> --subject exmple.com --sans "exmple.com" "www.exmple.com" --account-secret az-acme-registration --dns-provider Azure --azure-dns-zone /subscriptions/<SUB_ID>/resourceGroups/default/providers/Microsoft.Network/dnszones/exmple.com --verification-timeout-seconds 300
※複数のFQDNを指定する場合、「"example.jp" "www.example.jp"」のようにFQDN部分を「""」(ダブルクォーテーション)で囲って指定します。
複数のFQDNを指定することで、それらのFQDNがSAN(そのサーバー証明書を設定・使用するドメイン名)に記載された、1枚の証明書が発行されます。
Azure Key Vaultに該当の証明書が自動バインドされていることを確認します。


6. よくあるエラーと対処方法
❌ DNS challenge verification failed
原因
-
Azure DNS 反映遅延
-
TXT レコード作成権限不足
対処
-
--verification-timeout-secondsを 300 以上に設定 -
DNS ゾーンの権限確認
❌ badCSR: no SAN included in provided CSR
原因
-
SAN が未指定、または subject と不整合
対処
-
--sansに 必ず FQDN を指定 -
subject と SAN を一致させる
7. 注意事項・制限事項
-
Atlas SSL(ACME)では EAB が必須です。
-
Azure Key Vault に既存証明書がある場合、条件次第で更新動作となります。
-
秘密鍵は Key Vault 外へは出力されません。
-
Let’s Encrypt と Atlas では 挙動が一部異なります。