電子証明書の有効期限が切れてしまうと、Webサイト閲覧や認証の際に深刻なエラーが生じてしまう。Azure Key Vaultの場合、証明書の有効期限が切れる前にその警告メールを送ることができる。AzureポータルとAzure CLIでの設定方法を紹介する。
対象:Azure Key Vault(キーコンテナ)、Azureポータル、Azure CLI
システム内に組み込まれている「電子証明書」の有効期限が切れてしまったことに気付かず、しかも余所(よそ)から指摘されて慌てて対処することになる、という悪夢におびえているITシステムの管理者や運用担当者も多いのではないだろうか。
有効期限が切れると、Webサイト閲覧時にユーザーのブラウザ上でエラーが発生したり、証明書を使った認証で失敗したり、と深刻な問題が生じてしまう。
こうした危険性は、対象の証明書が手動更新である限り、Azureで証明書を管理できるサービス「Key Vault」などにも当てはまる問題である。
ただ、Key Vaultには格納中の証明書の有効期限が間近になると、メールで警告メッセージを送ってくれる機能がある。これを自分のメールアドレス宛てに設定しておけば、有効期限に気付きやすくなる。活用しない手はない。
そこで本Tech TIPSでは、AzureポータルおよびAzure CLIを使って、この警告メールの送信先メールアドレスを追加/削除/確認する方法を紹介する。対象は、Azureと連携していない認証局(認証機関、CA)から発行された証明書とする。
Key Vaultに格納した証明書の有効期限が近づいた時、自動で警告メールが送信されるようにするには、その送信先メールアドレスを設定しておく必要がある。また、その送信時期についても、デフォルトの設定(後述)のままでよいか確認しておいた方がよい。
警告メールの送信先メールアドレスは、以下のようにAzureポータルを操作することで追加できる。これはKey Vault内の全証明書で共通の設定だ。
これで警告メールの送信先メールアドレスが登録される。複数のメールアドレスを追加したい場合は、上記の操作を繰り返せばよい。
証明書の有効期限がどれくらい間近になったら警告メールを送信するか、という時期は、デフォルトで「有効期間の80%を過ぎた時点」に設定される。例えば、対象の証明書の有効期間が1年=12カ月=365日の場合、365日×80%=292日が過ぎた(残り73日)時点で警告メールが送信される、ということだ。
この送信時期の設定は、証明書ごとに独立している。Azureポータルでその設定を確認あるいは変更するには、まず対象の証明書の「発行ポリシー」設定ページを開く必要がある。
「発行ポリシー」設定ページが表示されたら、[有効期間のアクションタイプ]プルダウンリストに注目する。前述の通り、デフォルトでは以下のスクリーンショットのように「有効期間の80%を過ぎたら警告メールを送信」となっているはずだ。
これを「残り30日で期限切れになるタイミングで警告メールを送信」としたい場合は、[有効期間のアクションタイプ]プルダウンリストで[有効期限の残りが指定された日数になったら、すべての連絡先にメールを送信する]の方を選ぶ。その後に、すぐ下の[有効期限までの日数]欄に「30」と記入する。
以上で設定は完了だ。
上記で設定した時期(=証明書の有効期限が間近)になると、登録しておいた送信先メールアドレス宛てに以下のようなメッセージが届く。
このメールを受信したら、併記されているThumbprint(母印)などから対象の証明書を特定し、更新の手続きを始めればよい。
登録した警告メールの送信先メールアドレスは、以下のようにAzureポータルを操作することで削除できる。
既存のメールアドレスを変更するには、上記の(2)でそのメールアドレスを(左)クリックして編集してから[保存]をクリックすればよい。
ここからAzure CLIでAzureのリソースを操作していく。あらかじめコマンドプロンプトでAzureへのログイン(az loginコマンド)とサブスクリプションの選択(az account set -sコマンド)をしておくこと。
Azureポータルと同様にAzure CLIでも、有効期限の警告メールが自動で送信されるようにするには、送信先メールアドレスと送信時期の2つを設定する必要がある。
コマンドラインでKey Vault証明書の警告メール送信先を追加するには、以下のように「az keyvault certificate contact add」コマンドを実行する。
az keyvault certificate contact add --vault-name <Key Vault名> --email <送信先メールアドレス>
このとき、「--name <連絡先の名称>」というオプションを指定すると、対象のメールアドレスが誰のものなのかすぐ分かるように、そのフルネームが併記可能だ。
さらに、「--phone <電話番号>」というオプションを指定すると、連絡先の電話番号も併記できる。ただし、この電話番号に何か通知するという機能はなく、単に手動で連絡するためのメモという位置付けのようだ。
警告メールの送信時期をデフォルトの「有効期間の80%を過ぎた時点」から変更したい場合は、以下のように「az keyvault certificate set-attributes」コマンドを実行する。
az keyvault certificate set-attributes --vault-name <Key Vault名> -n <証明書の名称> --policy "{\"action\":{\"actionType\":\"EmailContacts\"},\"trigger\":{\"daysBeforeExpiry\":null,\"lifetimePercentage\":<有効期間の割合>}}"
ここでは、Windows OSのコマンドプロンプトで実行することを想定して、「--policy」で指定しているJSONデータ内のダブルクオート(")をバックスラッシュ(\)でエスケープしている。
例えば有効期間の90%を過ぎた時点で送信したいなら、JSONデータ内の「lifetimePercentage」キーに「90」、「daysBeforeExpiry」キーに「null」という値をそれぞれ指定すればよい。
一方、「有効期限までの日数」で指定したい場合は、以下のようにJSONデータを指定する必要がある。
az keyvault certificate set-attributes --vault-name <Key Vault名> -n <証明書の名称> --policy "{\"action\":{\"actionType\":\"EmailContacts\"},\"trigger\":{\"daysBeforeExpiry\":<有効期限までの日数>,\"lifetimePercentage\":null}}"
例えば有効期限の30日前に送信したいなら、JSONデータ内の「daysBeforeExpiry」キーに「30」、「lifetimePercentage」キーに「null」という値をそれぞれ指定すればよい。
変更した警告メールの送信時期を確認するには、以下のように「az keyvault certificate show」コマンドを実行する。
az keyvault certificate show --vault-name <Key Vault名> -n <証明書の名称> --query "policy.lifetimeActions" -o jsonc
デフォルトの設定のままなら、以下のように表示されるはずだ。
コマンドラインでKey Vault証明書の警告メール送信先を削除するには、以下のように「az keyvault certificate contact delete」コマンドを実行する。
az keyvault certificate contact delete --vault-name <Key Vault名> --email <送信先メールアドレス>
このとき、識別のために指定すべきはメールアドレスであり、前述の「--name」オプションで指定した「連絡先の名称」(フルネーム)の方ではない。
コマンドラインでKey Vault証明書の警告メール送信先の登録済みメールアドレスを確認するには、以下のように「az keyvault certificate contact list」コマンドを実行する。
az keyvault certificate contact list --vault-name <Key Vault名> -o jsonc
例えば、2つの連絡先(メールアドレス)を追加してから上記のコマンドラインを実行すると、以下のようにリストアップされる。
■関連リンク
Copyright© Digital Advantage Corp. All Rights Reserved.