レック・テクノロジー・コンサルティング株式会社TECH BLOG

【Azure】Application gatewayがKey Vaultに格納したTLS証明書を参照する方法

はじめに

クラウド技術部のWです。
今回はクライアントからTLS通信を実現するためにApplication gatewayで証明書を参照する方法をお伝えします。

Application gatewayでHTTPS通信を実現する方法

Application gatewayはWebアプリケーションへの通信を管理・分散できるロードバランサーです。
Application gatewayがTLS証明書を参照する方法が2つあります。

  • Application gatewayのリスナーに直接アタッチする方法
  • Key VaultにTLS証明書を格納し、Application gatewayのリスナーにTLS証明書を参照しに行く方法。

Key VaultにTLS証明書を格納するメリット

Application gatewayがKey Vaultに参照しに行くには以下のメリットがあります。

  • Key Vaultは証明書のほかにシークレットやSSHキー等機密情報を統合管理できる。
  • Key VaultはAzureの専用の保管場所に隔離し、脅威から守る。
  • 証明書にライフサイクル管理ができ、自動更新が可能になる。

以上のことから、Key VaultにTLS証明書を格納し、Application gatewayのリスナーにTLS証明書を参照しに行く方法を今回使用します。

前提条件

  • CLI操作を行うため、CloudshellかAzure CLIを利用できるようにする。
  • TLS 1.1がサポート終了したため、TLS1.2以上のTLS証明書を利用する。
  • ソフトウェアで検証された証明書を利用して下さい。ハードウェアセキュリティモジュール(MSM)で検証された証明書はサポート対象外です。
  • 必要なリソースはすべて作成した状態で手順を記載します。Key vaultはAzure ロールベースのアクセス制御を利用します。Application gatewayはHTTPS通信が可能なリスナーを用意してください。
  • Key vaultに証明書を格納/生成するには「キー コンテナー証明書責任者」が必要です。

設定の流れ

スクリーンショット 2025-10-14 231856.png
①ユーザーマネージドIDを作成します。作成したKey Vaultで「Key vault Certificate User」をマネージドIDに割り当てます。
②Key VaultにTLS証明書を格納します。
③TLS証明書をApplication gatewayから参照できるように、権限を付与したマネージドIDをApplication gatewayに割り当て、リスナーのTLS証明書として設定します。

実際にやってみる

まずはユーザー割り当てマネージドIDにキーコンテナーで「Key vault Certificate User」を割り当てます。
スクリーンショット 2025-10-14 231352.png

次にApplication gatewayでKey Vaultに格納したTLS証明書を参照する設定を行います。
Azureポータルで設定しようとするとエラーが発生し、設定することができないため、Powershell で実行します。 スクリーンショット 2025-10-14 232548.png

以下をPowershell で実行します。<>内はご自身の環境に合わせて設定してください。

$appgw = Get-AzApplicationGateway -Name -ResourceGroupName <リソースグループ名>
# ユーザー割り当てマネージドIDにリソースIDを指定
Set-AzApplicationGatewayIdentity -ApplicationGateway $appgw -UserAssignedIdentityId "/subscriptions/<サブスクリプションID>/resourceGroups/<リソースグループ名>/providers/Microsoft.ManagedIdentity/userAssignedIdentities/<マネージドID名>"
# Key Vault からシークレットの ID を取得する。
$secret = Get-AzKeyVaultSecret -VaultName "Key vault名" -Name "Key Vaultの証明書の名前"
$secretId = $secret.Id.Replace($secret.Version, "") # 今後の同期で Application Gateway が最新バージョンを使用するように設定
# Key VaultからシークレットIDをApplication gatewayが取得できるようにする。
Add-AzApplicationGatewaySslCertificate -KeyVaultSecretId $secretId -ApplicationGateway $appgw -Name $secret.Name
# Application Gateway への変更を保存する。
Set-AzApplicationGateway -ApplicationGateway $appgw

実行後、リスナーTLS証明書として、ポータルに表示されます。 スクリーンショット 2025-10-14 233357.png

DNSで名前解決できるよう設定し、HTTPSポートを開放しました。
実際にWebブラウザでURLを検索するとアクセスできるようになります。
※今回は自己証明書を使用したため、証明書エラーが記載されています スクリーンショット 2025-10-14 233738.png

終わりに

NW初心者の私はApplication gateway実装、DNS、証明書設定に苦労しました。
一度やってみると、アクセスエラーが発生する箇所がわかってきたので、とてもいい勉強になりました。

この記事をシェアする

  • Facebook
  • X
  • Pocket
  • Line
  • Hatena
  • Linkedin

資料請求・お問い合わせはこちら

ページトップへ戻る