次に示すのは、「セキュリティー/SSL」セクションの次のプロパティーに関する追加の注意事項です。
現在の LDAP サーバーで、セキュリティー証明書のインストールやポート番号などの SSL プロパティーが正しく設定されていることを確認してください。
Transport Layer Security (TLS) は、インターネット経由で通信するクライアント/サーバーアプリケーション間で機密性とデータの完全性を保証するプロトコルです。 このアダプタの TLS 動作では、セキュリティー保護された通信とされていない通信の両方が同じ接続上でサポートされます。
ただし、LDAP サーバーの中には、セキュリティー保護されていない設定済みのポート上で起動しなければならず、セキュリティー保護されたポート上では起動できないものもあります。詳細については、LDAP サーバーの関連するマニュアルを参照してください。
TLS オンデマンド: LDAP version 3 の機能 (StartTLS 拡張動作)。これは、Java SDK version 1.4 以降でサポートされています。このオプションを選択すれば、SSL 接続の確立を、プログラムを使ってオンデマンドで行えます。
「TLS オンデマンド」オプションを使用する場合、「プロバイダ URL」プロパティーが、セキュリティー保護されていない LDAP ポート (デフォルトは 389) を指している必要があります。
このオプションの選択後、セキュリティー保護された通信が必要になるたびに、LDAP サーバーに対するすべてのメソッド呼び出しを、LDAP OTD 経由でアクセス可能な startTLS 呼び出しと stopTLS 呼び出しの間に配置する必要があります。
次の例では、performAddEntry 呼び出しはセキュリティー保護された通信チャネルを経由しますが、performRename 呼び出しはセキュリティー保護されていないプレーン通信チャネルを経由します。
startTLS(); performAddEntry(); stopTLS(); performRename(); |
現在の LDAP サーバーで (SSL 設定に加えて) TLS 設定が正しく設定されていることを確認してください。
stopTLS メソッドを使用すると、一部の LDAP サーバーで予期しない動作が発生する可能性があります。コラボレーション定義からこのメソッドを削除しなければいけない可能性があります。たとえば、Sun ONE Directory Server への接続時には stopTLS メソッドを使用できません。詳細については、LDAP サーバーの関連するマニュアルを参照してください。
ユーザーが複数の値を持つ単一の属性を TLS 接続経由で繰り返し追加すると、Active Directory はコンテキストを解放しません。ただし、TLS を開始し、属性処理を追加してから TLS を停止する、という回避方法をとれば、コンテキストが解放されます。
LDAP OTD でこの機能を使用する方法については、「TLS 拡張ノード」を参照してください。
いくつかの環境下で、このプロパティーを true、false のどちらに設定するかによって、さまざまな Java 例外が発生する可能性があります。ここでは、それらの例外の原因について説明します。
たとえば、URL に含まれるホスト名が localhost、サーバー証明書に含まれるホスト名が localhost.stc.com であるととします。このとき、次の条件が適用されます。
「ホスト名の検証」が false に設定されている場合:
要求された URL とサーバー証明書間のホスト名チェック機能が「無効」になります。
https://localhost:444 などの不完全なドメインホスト名を使用することも、https://localhost.stc.com:444 などの完全なドメインホスト名を使用することも可能であり、どちらの場合も正常な応答が得られます。
「ホスト名の検証」が true に設定されている場合:
要求された URL とサーバー証明書間のホスト名チェック機能が「有効」になります。
https://localhost:444 などの不完全なドメインホスト名を使用すると例外 java.io.IOException (HTTPS hostname wrong) が発生する可能性があります。
https://localhost.stc.com:444 などの完全なドメインホスト名を使用する必要があります。
Application Server が使用している Java SDK のバージョンと対応する Application Server プロパティー設定とが一致しないと、例外 java.lang.ClassCastException が発生する可能性があります。