ROMANCE DAWN for the new world

Microsoft Azure を中心とした技術情報を書いています。

Azure Application Gateway V2 に App Service Certificate を使って HTTPS を構成する

Azure Application Gateway V2 のエンドポイントには IP アドレスが割当されますが、 バックエンドに Azure Active Directory B2C などで認証したアプリケーションを置くと、リダイレクト先として HTTPS のエンドポイントが必要となります。
カスタムドメインの HTTPS を構成する流れは公式ドキュメント通りですが、補足を加えてまとめました。
docs.microsoft.com
証明書のカスタムドメインには、Azure の App Service Domain を使いました。必ずしも Azure で購入する必要はありませんが、Azure Portal で購入手続きが完結できるメリットがあります。

事前準備

Azure Application Gateway V2 のエンドポイントに設定するカスタムドメインと証明書を用意します。App Service Domain と App Service Certificate の購入方法については、別の記事を参照してください。
gooner.hateblo.jp
本題ではないので、Azure Application Gateway V2 にバックエンドのアプリケーションを構成する部分は割愛します。今回は、.NET Core 向けの Web Apps をバックエンドに設定しました。

Azure Application Gateway V2 にカスタムドメインを構成する

App Service Domain を購入したときに作られた DNS zone を開きます。Azure Application Gateway V2 のパブリック IP アドレスを使って、demo.gunner-s.com というドメインのAレコードを追加します。
Aレコードの追加が反映されると、Azure Application Gateway V2 に HTTP のカスタムドメインでアクセスできるようになります。

f:id:TonyTonyKun:20200208184702p:plain

App Service Certificate を Key Vault で管理する

Azure App Service 以外のリソースで App Service Certificate を利用するには、証明書を Key Vault で管理する必要があります。まず、証明書をエクスポートしますが、今の Azure Portal ではできないので、Azure PowerShell を使います。
azure.github.io

公式ドキュメントの通りに Export-AppServiceCertificate 関数を追加して実行すると、ローカルに証明書の PFX ファイルをエクスポートできます。忘れずに、実行結果に表示されるパスワードをメモしておきましょう。

Export-AppServiceCertificate -loginId yourarmemail@domain.com -subscriptionId yoursubid -resourceGroupName resourceGroupNameOfYourAppServiceCertificate -name appServiceCertificateName

続いて、Azure PowerShell でエクスポートした PFX ファイルを、Key Vault の証明書メニューからインポートします。

f:id:TonyTonyKun:20200208213629p:plain

最後に Key Vault の Soft Delete の設定を有効にしておきます。Azure Application Gateway などの他のリソースから証明書を参照するために必要な設定です。

f:id:TonyTonyKun:20200208220323p:plain

Azure Application Gateway V2 に HTTPS を構成する

Azure Application Gateway から Key Vault で管理している証明書にアクセスできる権限を付与する必要があります。
Azure Portal から User Assigned Managed Identity を開き、appgw-identity という Managed Identity を登録します。リソースグループは、Azure Application Gateway と同じものを選択しました。

f:id:TonyTonyKun:20200208214738p:plain

Azure Portal から Key Vault を開き、登録した Managed Identity に Key Vault のアクセスポリシーを付与します。シークレットに GET のパーミッションが必要です。アクセスポリシーを追加した後、忘れずに保存ボタンを押しましょう。

f:id:TonyTonyKun:20200208215355p:plain

これで準備が整ったので、Azure Application Gateway で HTTPS を構成したリスナーを追加します。Key Vault から証明書を参照して構成することができます。

f:id:TonyTonyKun:20200208220529p:plain

リスナーを追加できたら、ルールを変更します。

f:id:TonyTonyKun:20200208220704p:plain

これで Azure Application Gateway の構成が完了です。HTTPS のカスタムドメインでアクセスできるようになります。

f:id:TonyTonyKun:20200208221014p:plain

まとめ

Azure Application Gateway V2 に App Service Certificate を使って HTTPS を構成してみました。
App Service Certificate は App Service 以外でも使えますし、Key Vault の連携部分を押さえておけば、Azure Portal だけで購入手続きが完結し、安全に管理することができるので、検証目的に使うのはアリかなと思います。