Azure API Management でクライアント証明書認証を使用してバックエンド サービスを保護する方法How to secure back-end services using client certificate authentication in Azure API Management

API Management には、クライアント証明書を使用して API のバックエンド サービスへのアクセスを保護する機能があります。API Management allows you to secure access to the back-end service of an API using client certificates. このガイドでは、Azure portal の Azure API Management サービス インスタンスで証明書を管理する方法について説明します。This guide shows how to manage certificates in the Azure API Management service instance in the Azure portal. また、証明書を使用してバックエンド サービスにアクセスするように API を構成する方法についても説明します。It also explains how to configure an API to use a certificate to access a back-end service.

API Management REST API を使用して証明書を管理する方法の詳細については、「 Azure API Management REST API 証明書エンティティ」をご覧ください。For information about managing certificates using the API Management REST API, see Azure API Management REST API Certificate entity.

前提条件 Prerequisites

注意

この記事は、新しい Azure PowerShell Az モジュールを使用するために更新されました。This article has been updated to use the new Azure PowerShell Az module. AzureRM モジュールはまだ使用でき、少なくとも 2020 年 12 月までは引き続きバグ修正が行われます。You can still use the AzureRM module, which will continue to receive bug fixes until at least December 2020. Az モジュールと AzureRM の互換性の詳細については、「Introducing the new Azure PowerShell Az module (新しい Azure PowerShell Az モジュールの概要)」を参照してください。To learn more about the new Az module and AzureRM compatibility, see Introducing the new Azure PowerShell Az module. Az モジュールのインストール手順については、Azure PowerShell のインストールを参照してください。For Az module installation instructions, see Install Azure PowerShell.

このガイドは、クライアント証明書認証を使用して API のバックエンド サービスにアクセスするように、API Management サービス インスタンスを構成する方法を示しています。This guide shows you how to configure your API Management service instance to use client certificate authentication to access the back-end service for an API. この記事の手順を行う前に、クライアント証明書の認証用にバックエンド サービスを構成する必要があります (Azure WebSites で証明書の認証を構成するには、こちらの記事を参照してください)。Before following the steps in this article, you should have your back-end service configured for client certificate authentication (to configure certificate authentication in Azure WebSites refer to this article). 証明書へのアクセスと、API Management サービスに証明書をアップロードするためのパスワードが必要です。You need access to the certificate and the password for uploading it to the API Management service.

クライアント証明書のアップロード Upload a client certificate

クライアント証明書を追加する

新しいクライアント証明書をアップロードするには、次の手順を実行します。Follow the steps below to upload a new client certificate. API Management サービス インスタンスをまだ作成していない場合は、API Management サービス インスタンスの作成に関するチュートリアルを参照してください。If you have not created an API Management service instance yet, see the tutorial Create an API Management service instance.

  1. Azure portal で Azure API Management サービス インスタンスに移動します。Navigate to your Azure API Management service instance in the Azure portal.
  2. メニューから [クライアント証明書] を選択します。Select Client certificates from the menu.
  3. [+ 追加] ボタンをクリックします。Click the + Add button.
    クライアント証明書を追加するAdd client certificates
  4. 証明書を参照し、ID とパスワードを入力します。Browse for the certificate, provide its ID and password.
  5. Create をクリックしてください。Click Create.

注意

証明書は、 .pfx 形式でなければなりません。The certificate must be in .pfx format. 自己署名証明書も許可されます。Self-signed certificates are allowed.

証明書がアップロードされると、 [クライアント証明書] に表示されます。Once the certificate is uploaded, it shows in the Client certificates. 証明書が多数ある場合は、ゲートウェイ認証にクライアント証明書を使用するように API を構成するために、必要な証明書の拇印をメモします。If you have many certificates, make a note of the thumbprint of the desired certificate in order to Configure an API to use a client certificate for gateway authentication.

注意

自己署名証明書などを使用するときに証明書チェーンの検証をオフにするには、この FAQ の項目に記載されている手順に従ってください。To turn off certificate chain validation when using, for example, a self-signed certificate, follow the steps described in this FAQ item.

クライアント証明書の削除 Delete a client certificate

証明書を削除するには、コンテキスト メニューの [...] をクリックし、証明書の横にある [削除] を選択します。To delete a certificate, click context menu ... and select Delete beside the certificate.

クライアント証明書を削除する

証明書が API によって使用されている場合、警告画面が表示されます。If the certificate is in use by an API, then a warning screen is displayed. 証明書を削除するには、最初に、証明書を使用するように構成されたすべての API からそれを削除する必要があります。To delete the certificate, you must first remove the certificate from any APIs that are configured to use it.

クライアント証明書の削除のエラー

ゲートウェイ認証にクライアント証明書を使用するように API を構成する Configure an API to use a client certificate for gateway authentication

  1. 左側の [API Management] メニューの [API] をクリックし、API に移動します。Click APIs from the API Management menu on the left and navigate to the API.
    クライアント証明書を有効にするEnable client certificates

  2. [デザイン] タブで、 [バックエンド] セクションの鉛筆アイコンをクリックします。In the Design tab, click on a pencil icon of the Backend section.

  3. [ゲートウェイ サーバーの資格情報][クライアント証明書] に変更し、ドロップダウンから証明書を選択します。Change the Gateway credentials to Client cert and select your certificate from the dropdown.
    クライアント証明書を有効にするEnable client certificates

  4. [Save] をクリックします。Click Save.

警告

この変更は即時に有効になり、その API の操作の呼び出しは、証明書を使用してバックエンド サーバーを認証するようになります。This change is effective immediately, and calls to operations of that API will use the certificate to authenticate on the back-end server.

ヒント

API のバックエンド サービスのゲートウェイ認証に証明書を指定すると、その API のポリシーに追加され、ポリシー エディターで表示できるようになります。When a certificate is specified for gateway authentication for the back-end service of an API, it becomes part of the policy for that API, and can be viewed in the policy editor.

自己署名証明書Self-signed certificates

自己署名証明書を使用している場合は、API Management がバックエンド システムと通信するために、証明書チェーン検証を無効にする必要があります。If you are using self-signed certificates, you will need to disable certificate chain validation in order for API Management to communicate with the backend system. そうしないと、エラー コード 500 が返されます。Otherwise it will return a 500 error code. これを構成するには、New-AzApiManagementBackend (新しいバック エンド) またはSet-AzApiManagementBackend (既存のバック エンド) PowerShell コマンドレットを使用して、-SkipCertificateChainValidation パラメーターを True に設定します。To configure this, you can use the New-AzApiManagementBackend (for new back end) or Set-AzApiManagementBackend (for existing back end) PowerShell cmdlets and set the -SkipCertificateChainValidation parameter to True.

$context = New-AzApiManagementContext -resourcegroup 'ContosoResourceGroup' -servicename 'ContosoAPIMService'
New-AzApiManagementBackend -Context  $context -Url 'https://contoso.com/myapi' -Protocol http -SkipCertificateChainValidation $true