証明書と App Service Environment
Note
この記事では、Isolated v2 App Service プランで使用される App Service Environment v3 について説明します
App Service Environment は、ご使用の Azure Virtual Network 内で実行する Azure App Service のデプロイです。 これは、インターネットでアクセス可能なアプリケーション エンドポイントまたはご使用の仮想ネットワーク内にあるアプリケーション エンドポイントを使用してデプロイできます。 インターネットでアクセス可能なエンドポイントを使用して App Service Environment をデプロイすると、そのデプロイは外部 App Service Environment と呼ばれます。 仮想ネットワーク内にあるエンドポイントを使用して App Service Environment をデプロイすると、そのデプロイは ILB App Service Environment と呼ばれます。 ILB App Service Environment の詳細については、ILB App Service Environment の作成と使用に関するドキュメントを参照してください。
アプリケーション証明書
App Service Environment でホストされるアプリケーションは、次のアプリ中心の証明書機能をサポートします。これらはマルチテナント App Service でも使用できます。 これらの証明書のアップロードと管理の要件と手順については、「Azure App Service で TLS/SSL 証明書を追加する」を参照してください。
証明書を App Service アプリまたは関数アプリに追加したら、その証明書を使用してカスタム ドメイン名をセキュリティで保護することや、その証明書をアプリケーション コードで使用することができます。
制限事項
App Service マネージド証明書は、App Service Environment でホストされているアプリではサポートされていません。
TLS の設定
TLS の設定は、アプリ レベルで構成できます。
クライアントのプライベート証明書
一般的なユース ケースでは、クライアント/サーバー モデルでのクライアントとしてアプリを構成します。 プライベート CA 証明書を使ってサーバーをセキュリティ保護する場合は、アプリにクライアント証明書 (.cer ファイル) をアップロードする必要があります。 次の手順では、アプリが実行されている worker の信頼ストアに証明書を読み込みます。 証明書を同じ App Service プラン内のアプリで使うには、1 回アップロードするだけで済みます。
注意
プライベート クライアント証明書は、Windows コード アプリのカスタム コードからのみサポートされます。 プライベート クライアント証明書は、アプリの外部ではサポートされていません。 これにより、プライベート証明書を使用してレジストリからアプリ コンテナー イメージを取得するシナリオや、プライベート証明書を使用してフロントエンド サーバーを介して TLS 検証を行うシナリオなどでの使用が制限されます。
証明書 (.cer ファイル) を App Service Environment 内のアプリにアップロードするには、次の手順に従います。 .cer ファイル は、証明書からエクスポートできます。 テストを目的とした一時的な自己署名証明書を生成する PowerShell の例が最後に示されています。
Azure portal で証明書を必要とするアプリに移動します。
アプリで [証明書] に移動します。 [公開キー証明書 (.cer)] を選びます。 [+ 証明書の追加] を選択します。 名前を指定します。 .cer ファイルを参照して選択します。 [アップロード] を選択します。
サムプリントをコピーします。
[構成]>[アプリケーションの設定] に移動します。 サムプリントを値として使用して、アプリ設定 WEBSITE_LOAD_ROOT_CERTIFICATES を作成します。 複数の証明書がある場合は、次のように空白なしのコンマで区切ることで、同じ設定に配置することができます。
84EC242A4EC7957817B8E48913E50953552DAFA6,6A5C65DC9247F762FE17BF8D4906E04FE6B31819
証明書は、その設定を構成したアプリと同じ App Service プラン内のすべてのアプリで使用できますが、プライベート CA 証明書に依存するすべてのアプリでは、タイミングの問題を回避するようにアプリケーション設定が構成されている必要があります。
別の App Service プラン内のアプリに対しても使用できるようにする必要がある場合は、その App Service プランでアプリの設定操作を繰り返す必要があります。 証明書が設定されていることを確認するには、Kudu コンソールに移動し、PowerShell デバッグ コンソールで次のコマンドを発行します。
dir Cert:\LocalMachine\Root
テストを実行するには、自己署名証明書を作成し、次の PowerShell を使用して .cer ファイルを生成します。
$certificate = New-SelfSignedCertificate -CertStoreLocation "Cert:\LocalMachine\My" -DnsName "*.internal.contoso.com","*.scm.internal.contoso.com"
$certThumbprint = "Cert:\LocalMachine\My\" + $certificate.Thumbprint
$fileName = "exportedcert.cer"
Export-Certificate -Cert $certThumbprint -FilePath $fileName -Type CERT
プライベート サーバー証明書
アプリがクライアント サーバー モデルのサーバーとして動作していて (リバース プロキシの内側で、またはプライベート クライアントと直接)、プライベート CA 証明書を使っている場合は、完全な証明書チェーンを含むサーバー証明書 (.pfx ファイル) をアプリにアップロードし、証明書をカスタム ドメインにバインドする必要があります。 インフラストラクチャは App Service Environment 専用であるため、完全な証明書チェーンはサーバーの信頼ストアに追加されます。 同じ App Service Environment 内のアプリで証明書を使うには、それを 1 回アップロードするだけで済みます。
Note
証明書をアップロードしたのが 2023 年 10 月 1 日より前である場合、完全な証明書チェーンをサーバーに追加するには、証明書をもう一度アップロードしてバインドし直す必要があります。
TLS/SSL によるカスタム ドメインのセキュリティ保護に関するチュートリアルに従い、プライベート CA ルート証明書を App Service Environment 内のアプリにアップロードしてバインドします。
次のステップ
- アプリケーション コードで証明書を使用する方法に関する情報