14.9 TLS接続用のSNIの構成

Oracle Net Servicesでは、クライアント/サーバー接続の確立にかかる時間を最小限に抑えるために、Server Name Indication (SNI)がサポートされています。SNIが設定されている場合は、リスナーによってTLSハンドシェイクの実行なしで接続リクエストがクライアントから適切なサーバーに転送されるため、接続の確立にかかる全体的な時間が短縮されます。

クライアントで、TLS拡張機能であるServer Name Indication (SNI)を使用して、関連するCONNECT_DATA情報(SERVICE_NAMEなど)をリスナーに送信できます。その後、リスナーによって、リクエストした接続データが最初のパケットのSNIフィールドから取得され、適切なサービス・ハンドラに接続リクエストが転送されて、クライアントとのTLSハンドシェイクの実行なしでそのリクエストが処理されます。次に、クライアントによって、サーバーとの完全なTLSハンドシェイクが実行され、接続が直接確立されます。

この最適化によって、1-RTTのデータ転送と一定量の処理を伴う、クライアントとリスナーの間のTLSハンドシェイクが1回節約され、それにより、サーバーとの接続の確立にかかる全体的な時間が最小限に抑えられます。

クライアントでSNIを有効にするには、sqlnet.ora内でUSE_SNIパラメータを設定します。SNIが有効になっている場合は、クライアントの接続文字列でのCONNECT_DATAパラメータを使用してSNI値を設定できます。接続のSNI値を設定するためのサポートされているCONNECT_DATAパラメータのリストを次に示します:
  • SERVICE_NAME
  • INSTANCE_NAME
  • SERVER
  • COLOCATION_TAG
クライアントの接続文字列にCONNECT_DATAの一部としてこれらのパラメータのどれかがある場合は、SNI値を設定するためにそれらのパラメータが使用されます。サポートされているリストにあるどのパラメータもCONNECT_DATAに含まれていない場合は、接続にSNI値は設定されず、リスナーによってクライアントとの通常のTLSハンドシェイクが実行されて接続リクエストが取得されます。

SNIは、リスナーとOracle Connection Manager (CMAN)でデフォルトで有効になっています。したがって、listener.oraまたはcman.oraにおいてUSE_SNIパラメータを明示的に設定する必要はありません。cman.ora内でUSE_SNIパラメータを明示的に設定した場合は、ゲートウェイ・プロセスによって発信接続でSNI値が設定されることにもなります。

DN一致の追加セキュリティが必要であるかCMANで構成されている場合、SNIは無効になり、CMANのリスナーは、クライアントとのTLSハンドシェイクの実行について通常のプロセスに従うことになります。

ノート:

SNIのサポートは、23.7以降のすべてのバージョンで使用できますが、以前のバージョンでは使用できません。