Azure Key Vault には証明書を作成する機能 (Key Vault 証明書) があり、Azure ポータル、Azure CLI、および Azure PowerShell などを用いて作成することが可能です。
Azure PowerShell で Key Vault 証明書を作成する際には Add-AzKeyVaultCertificate を用いますが、証明書ポリシー (サブジェクトや証明書の有効期限などの設定情報をまとめたもの) をオプション パラメーター -CertificatePolicy で指定することが可能です。
証明書ポリシーの作成には、New-AzKeyVaultCertificatePolicy コマンドレットを用いますが、オプション パラメーターが多いことと何を設定したらよいかどうかがイメージが付かなかったのでまとめてみました。
証明書ポリシーを作成する New-AzKeyVaultCertificatePolicy コマンドレットのオプション パラメーターについて
※Az モジュール v6.0.0 にて確認しています。
Azure ポータルに表示されている設定と New-AzKeyVaultCertificatePolicy のオプション パラメーターの対応をまとめると、以下の図のようになります。
オプション パラメーター
証明機関 (CA) の種類
-IssuerName パラメーターを用います。
例えば -Issuer ‘Self’ とすると、自己署名証明書となります。
件名
-SubjectName パラメーターを用います。
例えば -SubjectName ‘CN=rootca’ とすると、ルート CA 証明書となります。
DNS 名
-DnsName パラメーターを用います。
パラメーター値には DNS 名を指定します。複数指定が可能であり、List 型で設定します。
有効期間 (月単位)
-ValidityInMonths パラメーターを用います。
パラメーター値には有効期間 (月単位、数値) を指定します。
コンテンツの種類
-SecretContentType パラメーターを用います。
パラメーター値には以下のどちらかの値を指定 (Key Vauly シークレットのコンテンツの種類) することが可能です。
- application/x-pkcs12
コンテンツの種類を pkcs12 とする場合に指定します。
- application/x-pem-file
コンテンツの種類を pem とする場合に指定します。
有効期間のアクション タイプ
以下のパラメーターのどれか 1 つを用います。
- -RenewAtPercentageLifetime パラメーター
「有効期限が指定された割合になったら、自動的に更新する」を利用する場合に指定します。
値は有効期限の残りの割合 (パーセンテージ、数値) を指定します。 - -RenewAtNumberOfDaysBeforeExpiry パラメーター
「有効期限の残りが指定された日数になったら、自動的に更新する」を利用する場合に指定します。
値は有効期限の残りの日数 (数値) を指定します。 - -EmailAtPercentageLifetime パラメーター
「有効期限が指定された割合になったら、すべての連絡先にメールを送信する」を利用する場合に指定します。
値は有効期限の残りの日割合 (パーセンテージ、数値) を指定します。 - -EmailAtNumberOfDaysBeforeExpiry パラメーター
「有効期限の残りが指定された日数になったら、すべての連絡先にメールを送信する」を利用する場合に指定します。
値は有効期限の残りの日数 (数値) を指定します。
ポリシーの詳細構成
拡張キー使用法 (EKU)
-Ekus パラメーターを用います。
パラメーター値には拡張キー使用法 (EKU) のオブジェクト ID (サーバー認証 (1.3.6.1.5.5.7.3.1、など) を指定します。複数指定が可能であり、List 型で設定します。
X.509 キーの使用フラグ
-KeyUsage パラメーターを用います。
パラメーター値には以下の値を複数指定が指定することが可能であり、List 型で設定します。
- DigitalSignature
デジタル署名 (既定のキーの使用フラグ) を用いる場合に設定する - KeyEncipherment
キーの暗号化 (既定のキーの使用フラグ) を用いる場合に設定する - NonRepudiation
否認防止 (他のキーの使用フラグ) を用いる場合に設定する - DataEncipherment
データの暗号化 (他のキーの使用フラグ) を用いる場合に設定する - KeyAgreement
キーの承諾 (他のキーの使用フラグ) を用いる場合に設定する - KeyCertSign
キー証明書署名 (他のキーの使用フラグ) を用いる場合に設定する - CrlSign
CRL 署名 (他のキーの使用フラグ) を用いる場合に設定する - EncipherOnly
暗号化のみ (他のキーの使用フラグ) を用いる場合に設定する - DecipherOnly
暗号解読のみ (他のキーの使用フラグ) を用いる場合に設定する - None
X.509 キーを指定しない場合に設定する
キーを再利用して更新しますか?
-ReuseKeyOnRenewal パラメーターを用います。
キーを再利用して更新する場合にはパラメーター値を $true に設定します。
エクスポート可能な秘密キーですか?
-KeyNotExportable パラメーターを用います。
エクスポート可能な秘密キーでない場合、パラメーター値を $true に設定します。
キーの種類
-KeyType パラメーターを用います。
パラメーター値には以下のどちらかの値を指定 (Azure ポータルに表示されている以外の値) することが可能です。
- RSA
- RSA-HSM
- EC
- EC-HSM
※値として RSA-HSM および EC-HSM を指定した場合にはキーのエクスポートができないので注意。
キーサイズ
-KeySize パラメーターを用います。
パラメーター値には以下のどちらかの値を指定 (Azure ポータルに表示されている以外の値) することが可能です。
- 2048
- 3072
- 4096
- 256
- 384
- 521
証明書の透過性を有効にしますか?
-CertificateTransparency パラメーターを用います。
証明書の透過性を有効にする場合は値を $true に設定しますが、自己署名証明書とする場合には値を $false にします。
証明書の種類
-CertificateType パラメーターを用います。
証明書ポリシー作成コマンド例
ルート CA の自己証明書を作成する際の証明書ポリシーの例となります。
$policy = New-AzKeyVaultCertificatePolicy ` -IssuerName 'Self' ` -SubjectName 'CN=rootca' ` -ValidityInMonths 24 ` -SecretContentType 'application/x-pkcs12' ` -RenewAtNumberOfDaysBeforeExpiry 30 ` -Ekus ('1.3.6.1.5.5.7.3.1', '1.3.6.1.5.5.7.3.2') ` -KeyUsage ('DigitalSignature', 'KeyAgreement', 'KeyEncipherment') ` -KeyNotExportable $true ` -KeyType RSA ` -KeySize 2048 ` -CertificateTransparency $false
補足 : Key Vault 証明書の作成コマンド例
-VaultName パラメーターで Key Vault コンテナー名、-Name パラメーターで作成する Key Vault 証明書名、および -CertificatePolicy パラメーターで証明書ポリシーを指定します。
Add-AzKeyVaultCertificate -VaultName '<Key Vault コンテナー名>' -Name '<Key Vault 証明書名>' -CertificatePolicy $policy
参考サイト