現在、Apigee Edge のドキュメントを表示しています。
Apigee X のドキュメントをご確認ください。 情報
Server Name Indication(SNI)を使用すると、複数の HTTPS バックエンド サーバーを同じ IP アドレスとポートで処理でき、それらのバックエンド サーバーで同じ TLS 証明書を使用する必要はありません。TLS プロトコルの拡張版です。SNI がクライアントで有効になっている場合、クライアントは最初の TLS handshake の一環としてバックエンド サーバーのホスト名を渡します。これにより、TLS サーバーは、クライアントからのリクエストの検証に使用する TLS 証明書を決定できます。
既存のバックエンド サーバーとの下位互換性を確保するため、Edge for the Private Cloud の Message Processor コンポーネントでは、デフォルトで SNI が無効になっています。バックエンド サーバーが SNI をサポートするように構成されている場合は、Message Processor コンポーネントで SNI を有効にする必要があります。そうしないと、Apigee Edge を経由する API リクエストが TLS Handshake の失敗で失敗します。
このドキュメントでは、次の方法について説明します。
- バックエンド サーバーで SNI が有効になっているかどうかを確認する
- SNI をサポートするバックエンド サーバーと通信するために、Message Processor で SNI を有効にします
- 必要に応じて Message Processor で SNI を無効にする
- Message Processor で SNI 構成が正常に更新されたことを確認します。
始める前に
- SNI について詳しくは、エッジでの SNI の使用をご覧ください。
- Private Cloud での Edge の構成に慣れていない場合は、Edge の構成方法をご覧ください。
SNI が有効になっているサーバーの識別
このセクションでは、バックエンド サーバーで SNI が有効になっているかどうかを確認する方法について説明します。
-
次のように
openssl
コマンドを実行し、サーバー名を渡さずに、関連するサーバーホスト名(Edge Router またはバックエンド サーバー)への接続を試みます。openssl s_client -connect hostname:port
-
証明書を取得できるだけでなく、以下のように
openssl
コマンドで handshake の失敗が見られる場合もあります。
CONNECTED(00000003) 9362:error:14077410:SSL routines:SSL23_GET_SERVER_HELLO:sslv3 alert handshake failure:/BuildRoot/Library/Caches/com.apple.xbs/Sources/OpenSSL098/OpenSSL098-64.50.6/src/ssl/s23_clnt.c:593
-
openssl
コマンドを実行し、以下に示すようにサーバー名を渡して、関連するサーバーのホスト名(Edge Router またはバックエンド サーバー)への接続を試行します。openssl s_client -connect hostname:port -servername hostname
- ステップ 1 で handshake が失敗する場合や、ステップ 1 とステップ 2 で異なる証明書を取得した場合は、指定したサーバーが SNI が有効になっていることを示しています。
- 複数のバックエンド サーバーに対してこれを確認する場合は、バックエンド サーバーごとに上記の手順を繰り返す必要があります。
SNI が有効になっているバックエンド サーバーが 1 つ以上ある場合は、後述のように、Message Processor コンポーネントで SNI を有効にする必要があります。そうしないと、Apigee Edge を経由する API リクエストが TLS Handshake の失敗で失敗します。
Edge Message Processor とバックエンド サーバー間の SNI を有効にする
このセクションでは、Edge Message Processor とバックエンド サーバーの間で SNI を有効にする方法について説明します。SNI を有効にするには、Message Processor コンポーネントのプロパティ jsse.enableSNIExtension
を使用します。Message Processor のプロパティを構成するには、Edge の構成方法で説明されている構文に従ってトークンを使用します。
Message Processor で SNI を有効にするには、次の操作を行います。
jsse.enableSNIExtension
プロパティのトークンを見つける
jsse.enableSNIExtension
プロパティのトークンを確認する手順は次のとおりです。
-
次のコマンドを使用して、Message Processor のソース ディレクトリ
/opt/apigee/edge-message-processor/source
でjsse.enableSNIExtension
プロパティを検索します。grep -ri "jsse.enableSNIExtension" /opt/apigee/edge-message-processor/source
-
このコマンドの出力には、Message Processor のプロパティ
jsse.enableSNIExtension
のトークンが次のように表示されます。/opt/apigee/edge-message-processor/source/conf/system.properties:jsse.enableSNIExtension={T}conf_system_jsse.enableSNIExtension{/T}
{T}{/T}
タグ間の文字列は、Message Processor の.properties
ファイルで設定できるトークンの名前です。したがって、プロパティ
jsse.enableSNIExtension
のトークンは次のようになります。conf_system_jsse.enableSNIExtension
Message Processor で SNI を有効にする
次の手順では、Apigee Message Processor コンポーネントで SNI を有効にする方法について説明します。
- Message Processor マシンで、次のファイルをエディタで開きます。まだ存在しない場合は作成します。
/opt/apigee/customer/application/message-processor.properties
たとえば、
vi
を使用してファイルを開くには、次のコマンドを入力します。vi /opt/apigee/customer/application/message-processor.properties
-
プロパティ ファイルに次の形式の行を追加します。
conf_system_jsse.enableSNIExtension=true
- 変更を保存します。
-
以下に示すように、このプロパティ ファイルの所有者を
apigee
ユーザーにします。chown apigee:apigee /opt/apigee/customer/application/message-processor.properties
-
次のように Message Processor を再起動します。
/opt/apigee/apigee-service/bin/apigee-service edge-message-processor restart
- Message Processor で SNI 構成が更新されていることを確認します。
- 複数の Message Processor がある場合は、すべての Message Processor で上記の手順を繰り返します。
Edge Message Processor とバックエンド サーバー間の SNI を無効にする
通常、SNI を有効にしても問題は発生しません。ただし、SNI を有効にした後に Edge Message Processor とバックエンド サーバーの間に接続の問題が発生した場合は、次の手順で SNI をいつでも無効にできます。
SNI を無効にするには、Message Processor コンポーネントでプロパティ jsse.enableSNIExtension
を false
に設定します。
Message Processor で SNI を無効にする
次の手順では、Apigee Message Processor で SNI を無効にする方法について説明します。
-
Message Processor マシンで、次のファイルをエディタで開きます。まだ存在しない場合は作成します。
/opt/apigee/customer/application/message-processor.properties
たとえば、
vi
を使用してファイルを開くには、次のコマンドを入力します。vi /opt/apigee/customer/application/message-processor.properties
-
conf_system_jsse.enableSNIExtension=true
という行が/opt/apigee/customer/application/message-processor.properties
に存在する場合は、次のように変更します。conf_system_jsse.enableSNIExtension=false
- 変更を保存します。
-
以下に示すように、このプロパティ ファイルの所有者を
apigee
ユーザーにします。chown apigee:apigee /opt/apigee/customer/application/message-processor.properties
-
次のように Message Processor を再起動します。
/opt/apigee/apigee-service/bin/apigee-service edge-message-processor restart
- Message Processor で SNI 構成が更新されていることを確認します。
- 複数の Message Processor がある場合は、すべての Message Processor で上記の手順を繰り返します。
Message Processor で SNI 構成を確認する
このセクションでは、Message Processor で SNI 構成が正常に更新されていることを確認する方法について説明します。
トークン conf_system_jsse.enableSNIExtension
を使用して Message Processor で SNI を構成している場合でも、実際のプロパティ jsse.enableSNIExtension
が新しい値で設定されていることを確認する必要があります。
-
Message Processor マシンで、
/opt/apigee/edge-message-processor/conf
ディレクトリのプロパティjsse.enableSNIExtension
を検索し、次のように新しい値が設定されていることを確認します。grep -ri "jsse.enableSNIExtension" /opt/apigee/edge-message-processor/conf
-
Message Processor で SNI 構成が正常に更新されると、上記のコマンドにより
system.properties
ファイルに新しい値が表示されます。Message Processor で SNI を有効にした後の上記のコマンドのサンプル結果は次のとおりです。
/opt/apigee/edge-message-processor/conf/system.properties:jsse.enableSNIExtension=true
同様に、Message Processor で SNI を無効にした後の上記のコマンドの結果は次のようになります。
/opt/apigee/edge-message-processor/conf/system.properties:jsse.enableSNIExtension=false
上の出力例では、プロパティ
jsse.enableSNIExtension
がsystem.properties
で新しい値true
またはfalse
に更新されています。これは、Message Processor で SNI が正常に有効または無効にされていることを示します。 -
プロパティ
jsse.enableSNIExtension
に古い値が引き続き表示される場合は、該当するセクションで説明されているすべての手順に沿って、SNI を正しく有効または無効にしていることを確認してください。ステップを見逃した場合は、すべてのステップをもう一度正しくやり直します。 - それでも SNI の有効/無効を切り替えられない場合は、Apigee Edge サポートにお問い合わせください。