InfoDirectory SDK 使用手引書 |
目次
索引
![]() ![]() |
第2章 アプリケーション開発環境(LDAP C API) | > 2.2 関数インタフェース | > 2.2.2 セションのオープン/初期設定 |
この関数は、SSLを使用する場合に、通常のldap_init()の代わりに使用します。
この関数でセションをオープンした場合は、安全にサーバとの通信ができます。また、SSLの環境を指定することにより、証明書による認証も可能です。この関数は、スレッドアンセーフです。【指定形式】
LDAP *ldapssl_init(
char *hostname,
int portno,
SSLENV *sslenv
);【パラメタの説明】
- hostname
InfoDirectoryサーバのホスト名、またはIPアドレスを示す文字列のアドレスを指定します。ホスト名やIPアドレスは、空白で区切って複数指定できます。複数の相手ホストが指定された場合、コネクションを確立する際に指定された順番で接続を試みて、接続に成功した最初のホストと通信します。
- portno
InfoDirectoryサーバのポート番号を指定します。デフォルトのLDAPポートを使用する場合は、ポート番号に0を指定します。デフォルトのポート番号はLDAP_SSL_PORT“636”です。
- sslenv
SSLENV構造体のアドレスを指定します。
SSLを使用する場合は、ここで指定する構造体にSSLの動作環境の情報を設定して、パラメタとして渡す必要があります。SSLENV構造体の各メンバには、以下の値を設定します(“省略可”となっているパラメタは、NULLを指定するとデフォルトが指定されたものとみなされます)。
SSLENV構造体のメンバを以下に示します。【SSLENV構造体のメンバの説明】
- ssl_version(省略可)
使用するSSLプロトコルの種類を指定します。
- SSL V2プロトコルの場合 : 2
- SSL V3プロトコルの場合 : 3
上記以外の値を指定した場合は、SSLを使用しないものとして処理されます(ldap_init()と同じ処理となります)。
- ssl_verify(省略可)
証明書の検証をするかどうかを指定します。
- 証明書の検証をしない場合 : 0
- クライアントの証明書だけ検証する場合 : 1
- サーバから送られてきた証明書を検証する場合 : 2
上記以外の値を指定した場合は、以下の値が指定されたものとみなされます。
- SSL V2の場合 : 1
- SSL V3の場合 : 2
- crypt(省略可)
暗号化の方法を、暗号化アルゴリズムを示す文字列のアドレスで指定します。複数指定する場合には、“:”(コロン)で区切り、列記します。
指定可能な文字列を以下に示します。セキュリティレベルの値は、暗号強度の順位を表しています。
表: 指定可能な暗号化アルゴリズム
プロトコル
暗号化方式の文字列
セキュリティ
レベルSSL V2
"DES-CBC3-MD5"
1
"DES-CBC-MD5"
2
"RC4-MD5"
3
"RC2-MD5"
3
"EXP-RC4-MD5"
5
"EXP-RC2-MD5"
5
SSL V3
"RSA-3DES-SHA"
1
"RSA-DES-SHA"
2
"RSA-RC4-MD5"
3
"RSA-RC4-SHA"
3
"RSA-EXPORT-RC4-MD5"
5
"RSA-EXPORT-RC2--MD5"
5
"RSA-NULL-MD5"
7
"RSA-NULL-SHA"
7
デフォルトは、暗号化ライブラリ(SCTL/SCLライブラリ)がサポートしている暗号仕様で、組合せ可能な暗号化アルゴリズムが指定されたものとみなします。
- slot_path(必須)
スロットディレクトリのアドレスを指定します(ディレクトリのパス名をフルパスで指定します)。指定するスロットディレクトリは、証明書環境を作成するときに指定したスロットディレクトリを指定してください。証明書環境の作成については、SSL通信を使用するにはを参照してください。
- tkn_lbl(必須)
トークンラベルのアドレスを指定します。指定するトークンラベルは、証明書環境を作成するときに指定したトークンラベルを指定してください。証明書環境の作成については、SSL通信を使用するにはを参照してください。
- tkn_pwd(必須)
ユーザPINのアドレスを指定します。指定するユーザPINは、証明書環境を作成するときに指定したユーザPINを指定してください。証明書環境の作成については、SSL通信を使用するにはを参照してください。
- cert_path(必須)
運用管理ディレクトリのアドレスを指定します(ディレクトリのパス名をフルパスで指定します)。指定する運用管理ディレクトリは、証明書環境を作成するときに指定した運用管理ディレクトリを指定してください。証明書環境の作成については、SSL通信を使用するにはを参照してください。
- user_cert(省略可)
ユーザ証明書ニックネームのアドレスを指定します。デフォルトは、証明書管理に登録されている自分の証明書がすべて指定されたものとみなします。指定するユーザ証明書ニックネームは、証明書環境を作成するときに指定したユーザ証明書ニックネームを指定してください。証明書環境の作成については、SSL通信を使用するにはを参照してください。
- ssl_err(必須)
SSLエラーコードが設定されます。必ず0で初期化する必要があります。
- ssl_err_detail(必須)
SSLエラー詳細コードが設定されます。必ず0で初期化する必要があります。
- ssl_timer(省略可)
SSLでのタイマ(秒単位)を設定します。省略時は、タイマが3600秒となります。InfoDirectoryサーバの応答に対する最大の待ち時間に使用されます。
【復帰値】
正常完了の場合には、復帰値としてセションハンドルを返します。セションハンドルは、獲得したLDAP構造体へのポインタです。
異常完了の場合には、復帰値としてNULLを返します。異常完了の場合、以下の状況が考えられます。
- LDAP構造体用のメモリが獲得できないなど、システムの資源が不足した。
- トレースを取得している場合には、トレースファイルのバックアップに失敗した。
SSLライブラリパッケージがインストールされていない。- SSL環境設定に誤りがある(必須項目が設定されていない)。
- SSLライブラリでエラーが発生した。
【注意事項】
- セションハンドル
ldapssl_init()以降に呼び出す関数は、ここで取得したセションハンドルをパラメタに指定します。セションハンドルは、セションをクローズするまで有効です。
- SSLエラーコード
ldapssl_init()で発生したSSLライブラリのエラーコードは、ldapssl_error()で参照できません。そのため、SSLENV構造体のメンバ(ssl_errとssl_err_detail)の値でチェックする必要があります。
SSLライブラリでエラーが発生していない場合は、0が設定されたままとなっています。SSLエラーコードの値については、SSLエラーコードを参照してください。
- 簡易認証について
SSLを使用した簡易認証をする場合、認証はDN名とパスワードを使用して行われます。SSLを使用した簡易認証の場合、DN名による簡易認証とSSLによる安全な通信が可能です。簡易認証については、InfoDirectoryサーバとのユーザ認証を参照してください。
- 証明書ベースの認証について
SSLを使用した証明書ベースの認証をする場合、認証はldapssl_init()で指定されたSSL環境の証明書を使用する必要があります。SSLを使用した証明書認証の場合、証明書による認証とSSLによる安全な通信が可能です。証明書ベースの認証については、InfoDirectoryサーバとのユーザ認証を参照してください。
- セションの共用について
オープンした1つのセションを複数のスレッドで共有して、各スレッドからLDAP要求はできません。スレッドを使用しLDAP要求をする場合、各スレッドでldapssl_init()を呼び獲得したセションを使用して、それぞれのスレッドからLDAP要求を行ってください。
- スレッドの排他処理について
ldapssl_init()関数はスレッドアンセーフ関数です。複数のスレッドから同時に呼び出す際は、アプリケーション側で各スレッド間の排他処理を行ってください。排他を行わない場合、動作の保証はできません。
- 複数ホストの指定について
複数のホストを指定した場合は、1つめのホストに対してCONNECTを行いソケットレベルで接続できない場合だけ、2つめ以降のホストに対して接続を試みます。したがって以下のような場合には利用できません。
- 複数指定したホスト上に作成されているDSAの中から、起動しているDSAに対して接続する。
(1つめのホストに接続してDSAが起動していなければ2つめのホストのDSAに接続を試みる。)上記のようなDSA起動レベルの要件を満たすには、DSA起動確認(ldap_simple_bind()/ldap_simple_bind_s()/ldap_sasl_bind()/ldap_sasl_bind_s()の結果確認)のAPIを使用してアプリケーション側で対応してください。
目次
索引
![]() ![]() |