Azure API Management インスタンスのカスタム ドメイン名を構成する

適用対象: すべての API Management レベル

Azure Cloud で Azure API Management サービス インスタンスを作成すると、Azure によってそれに azure-api.net サブドメイン (例: apim-service-name.azure-api.net) が割り当てられます。 また、独自のカスタム ドメイン名 (例: contoso.com ) を使用して API Management エンドポイントを公開することもできます。 この記事では、既存のカスタム DNS 名を、API Management インスタンスによって公開されるエンドポイントにマップする方法を説明します。

重要

API Management は、ホスト ヘッダーの値が一致する要求のみを受け入れます。

  • ゲートウェイの既定のドメイン名
  • ゲートウェイの任意の構成済みカスタム ドメイン名

前提条件

  • API Management インスタンス。 詳細については、Azure API Management インスタンスの作成に関する記事を参照してください。

  • 自分または自分の所属する組織が所有しているカスタム ドメイン名。 この記事では、カスタム ドメイン名を取得する手順は説明しません。

  • 必要に応じて、有効な証明書と公開キーおよび秘密キー (.PFX)。 サブジェクトやサブジェクトの別名 (SAN) は、ドメイン名と一致している必要があります (これによって API Management インスタンスでは、TLS を通して URL を安全に公開することができます)。

    ドメイン証明書のオプション」を参照してください。

  • DNS サーバーでホストされている DNS レコード。カスタム ドメイン名を API Management インスタンスの既定のドメイン名にマップします。 このトピックでは、DNS レコードをホストする手順は説明しません。

    必要なレコードの詳細については、この記事で後述する「DNS の構成」を参照してください。

カスタム ドメインのエンドポイント

カスタム ドメイン名を割り当てることができる API Management エンドポイントはいくつかあります。 現時点では、次のエンドポイントを利用できます。

エンドポイント Default
ゲートウェイ 既定値: <apim-service-name>.azure-api.net。 従量課金レベルの構成で利用できるエンドポイントはゲートウェイだけです。

既定のゲートウェイ エンドポイント構成は、カスタムのゲートウェイ ドメインが追加された後も引き続き使用できます。
開発者ポータル 既定値: <apim-service-name>.developer.azure-api.net
管理 既定値: <apim-service-name>.management.azure-api.net
構成 API (v2) 既定値: <apim-service-name>.configuration.azure-api.net
SCM 既定値: <apim-service-name>.scm.azure-api.net

考慮事項

  • サービス レベルでサポートされている任意のエンドポイントを更新できます。 通常、お客様は、ゲートウェイ (この URL は、API Management を通じて公開される API を呼び出すために使用されます) と開発者ポータル (開発者ポータルの URL) を更新します。
  • 既定のゲートウェイ エンドポイントは、カスタム ゲートウェイのドメイン名を構成した後でも使用でき、削除されません。 カスタムのドメイン名で構成した他の API Management エンドポイント (開発者ポータルなど) では、既定のエンドポイントは使用できなくなります。
  • 管理SCM のエンドポイントを内部的に使用できるのは、API Management インスタンスの所有者のみです。 これらのエンドポイントにカスタム ドメイン名を割り当てることはあまりありません。
  • Premium レベルと Developer レベルでは、ゲートウェイ エンドポイントに対する複数のホスト名の設定がサポートされます。
  • ワイルドカードを使用したドメイン名 (*.contoso.com など) は、従量課金レベル以外のすべてのレベルでサポートされています。 api.contoso.com への要求について、特定のサブドメイン証明書 (たとえば、api.contoso.com) がワイルドカード証明書 (*.contoso.com) よりも優先されます。

ドメイン証明書のオプション

API Management は、カスタム TLS 証明書または Azure Key Vault からインポートされた証明書をサポートします。 また、無料のマネージド証明書を有効にすることもできます。

警告

証明書のピン留めが必要な場合は、既定の証明書または無料のマネージド証明書ではなく、カスタム ドメインの名前と、カスタムまたは Key Vault の証明書を使います。 管理していない証明書に対して、ハード依存関係を作成することはお勧めしません。

既にサードパーティ プロバイダーからのプライベート証明書がある場合は、それを API Management インスタンスにアップロードすることができます。 次の要件を満たしている必要があります (無料の API Management によるマネージド証明書を有効にした場合は、既にこれらの要件を満たしています)。

  • Triple DES を使用して暗号化され、必要に応じてパスワードで保護された PFX ファイルとしてエクスポートされている
  • 少なくとも 2048 ビット長の秘密キーが含まれている
  • 証明書チェーン内のすべての中間証明書およびルート証明書が含まれている。

カスタム ドメイン名を設定する - ポータル

使用するドメイン証明書に従って手順を選択します。

  1. Azure portal で API Management インスタンスに移動します。
  2. 左側のナビゲーションで [カスタム ドメイン] を選択します。
  3. [+ 追加] を選択するか、更新する既存のエンドポイントを選択します。
  4. 右側のウィンドウで、カスタム ドメインのエンドポイントの [種類] を選択します。
  5. [ホスト名] フィールドで、使用する名前を指定します。 たとえば、「 api.contoso.com 」のように入力します。
  6. [証明書] で、[カスタム] を選択します。
  7. [証明書ファイル] を選択し、証明書を選択してアップロードします。
  8. 証明書がパスワードで保護されている場合は、有効な .PFX ファイルをアップロードし、その [パスワード] を指定します。
  9. ゲートウェイ エンドポイントを構成する場合は、必要に応じて他のオプションを選択または選択解除します ([クライアント証明書のネゴシエート][既定の SSL バインディング] など)。 カスタム証明書を使ってゲートウェイ ドメインを構成する
  10. [+ 追加] を選択するか、既存のエンドポイントの [更新] を選択します。
  11. [保存] を選択します。

DNS の構成

  • カスタム ドメインの CNAME レコードを構成します。
  • API Management の無料のマネージド証明書を使用する場合は、ドメインの所有権を確立するために TXT レコードも構成します。

Note

無料の証明書は DigiCert によって発行されます。 一部のドメインでは、CAA ドメイン レコード0 issue digicert.com の値を使用して作成することによって、DigiCert を証明書の発行者として明示的に許可する必要があります。

CNAME レコード

カスタム ドメイン名 (例: api.contoso.com) から API Management サービスのホスト名 (例: <apim-service-name>.azure-api.net) をポイントする CNAME レコードを構成します。 IP アドレスが変更された場合、CNAME レコードは A レコードよりも安定しています。 詳細については、「Azure API Management の IP アドレス」と API Management の FAQ に関するページを参照してください。

注意

一部のドメイン レジストラーでは、CNAME レコードを使用する場合、サブドメイン (www.contoso.com など) だけをマップでき、ルート名 (contoso.com など) はマップできません。 CNAME レコードの詳細については、レジストラーが提供するドキュメント、または IETF ドメイン名 - 実装と仕様書に関するドキュメントを参照してください。

注意事項

無料のマネージド証明書を使用し、DNS プロバイダーで CNAME レコードを構成する場合は、既定の API Management サービス ホスト名 (<apim-service-name>.azure-api.net) に解決されていることを確認します。 現在、CNAME レコードが既定の API Management ホスト名に解決されない場合、API Management は証明書を自動的に更新しません。 たとえば、無料のマネージド証明書を使用していて、DNS プロバイダーとして Cloudflare を使用している場合は、CNAME レコードで DNS プロキシが有効になっていないことを確認します。

TXT レコード

API Management の無料のマネージド証明書を有効にする場合は、ドメイン名の所有権を確立するために DNS ゾーンに TXT レコードも構成します。

  • レコードの名前は、apimuid というプレフィックスが付くカスタム ドメイン名です。 例: apimuid.api.contoso.com.
  • 値は、API Management インスタンスによって提供されるドメイン所有権識別子です。

ポータルを使用してカスタム ドメインの無料のマネージド証明書を構成すると、必要な TXT レコードの名前と値が自動的に表示されます。

ドメイン所有権識別子の取得 REST API を呼び出してドメイン所有権識別子を取得することもできます。

API Management プロキシ サーバーが SSL 証明書を使用して TLS ハンドシェイクで応答する方法

ゲートウェイ エンドポイントのカスタム ドメインを構成する場合は、クライアント要求に応じて、API Management がサーバー証明書を使用してどのように応答するかを決定するための、追加のプロパティを設定できます。

Server Name Indication (SNI) ヘッダーを使用して呼び出すクライアント

ゲートウェイ エンドポイント用に 1 つ以上のカスタム ドメインが構成されている場合、API Management は、次のいずれかからの HTTPS 要求に応答できます。

  • カスタム ドメイン (contoso.com など)
  • デフォルト ドメイン (apim-service-name.azure-api.net など)

SNI ヘッダーの情報に基づいて、API Management は、サーバー証明書を使用して応答します。

SNI ヘッダーを使用せずに呼び出すクライアント

SNI ヘッダーを送信しないクライアントを使用している場合、API Management は次のロジックに基づいて応答を作成します。

  • このサービスにゲートウェイ用のカスタム ドメインが 1 つだけ構成されている場合、そのゲートウェイのカスタム ドメインに発行された証明書が既定の証明書になります。

  • このサービスにゲートウェイ用のカスタム ドメインが複数構成されている場合 (Developer および Premium サービス レベルでサポートされています)defaultSslBinding プロパティを true ("defaultSslBinding":"true") に設定することで、既定の証明書を指定できます。 ポータルで、[既定の SSL バインド] チェックボックスをオンにします。

    このプロパティを設定していない場合、*.azure-api.net でホストされる既定のゲートウェイ ドメインに発行された証明書が、既定の証明書になります。

ペイロードの大きい PUT/POST 要求のサポート

HTTPS でクライアント側の証明書を使用する場合、API Management プロキシ サーバーは、大量のペイロード (> 40 KB) の要求をサポートします。 サーバーの要求がフリーズしないように、ゲートウェイ ホスト名で、negotiateClientCertificate プロパティを true ("negotiateClientCertificate": "true") に設定できます。 ポータルで、[クライアント証明書のネゴシエート] チェックボックスをオンにします。

このプロパティが true に設定されている場合、HTTP 要求の交換前の SSL/TLS 接続時に、クライアント証明書が要求されます。 この設定はゲートウェイ ホスト名レベルで適用されるため、すべての接続要求でクライアント証明書が要求されます。 この制限を回避して、ゲートウェイ用のカスタム ドメインを最大 20 個設定できます (Premium サービス レベルでのみサポートされています)。

次のステップ

サービスのアップグレードとスケーリングを行う