6.2. setpin の仕組み
PIN Generator は、LDAP ディレクトリーにユーザーエントリーの PIN を生成し、これらの PIN でディレクトリーを更新します。setpin コマンドを実行するには、次の 5 つのオプションが必要です。
- LDAP サーバーのホスト名(ホスト)およびポート番号(ポート)
- バインド DN (binddn)およびパスワード(bindpw)
- PIN を必要とするユーザーエントリーをフィルターリングするための LDAP フィルター(フィルター)
setpin コマンドは以下のようになります。
setpin host=csldap port=19000 binddn="CN=Directory Manager" bindpw=secret filter="(ou=employees)" basedn="dc=example,dc=com"
この例では、従業員 組織単位(ou)のすべてのエントリーをクエリーします。フィルターに一致する各エントリーについて、情報は標準エラーおよび標準出力に出力されます。
注記
PIN Generator はディレクトリーに多くの変更を行うため、正しいフィルターを使用するか、間違ったエントリーを変更することが重要です。オプションが使用されない限り、ディレクトリーに変更が加えられないため、write オプションを使用することは安全です。これにより、エントリーの変更前に PIN を検証できます。
この情報は、出力オプションを使用して別の出力ファイルに書き込むことができます。詳細は、「Output File」 を参照してください。LDAP 検索フィルターによって返されるエントリーは、エントリー DN を一覧表示する ASCII 入力ファイルを使用してさらに制限できます。ファイル内のエントリーのみが更新されます。入力ファイルは、入力 オプションで設定されます。入力ファイルは LDAP ディレクトリーエントリーの代わりではありません。フィルター属性を指定する必要があります。入力ファイルの詳細は、「入力ファイル」 を参照してください。図6.1「PIN の生成時の入出力ファイルの使用」 は、入力ファイルと出力ファイルが setpin ツールでどのように機能するかを示します。
図6.1 PIN の生成時の入出力ファイルの使用
出力ファイルには、次の例に示すように、実行中の setpin からのエントリーと PIN 情報が含まれます。
Processing: cn=QA Managers,ou=employees,dc=example,dc=com Adding new pin/password dn:cn=QA Managers,ou=employees,dc=example,dc=com pin:lDWynV status:notwritten Processing: cn=PD Managers,ou=employees,dc=example,dc=com Adding new pin/password dn:cn=PD Managers,ou=employees,dc=example,dc=com pin:G69uV7 status:notwritten
出力には、ディレクトリー内の各エントリーのステータスも含まれます。ステータスの値は 表6.1「PIN ジェネレーターステータス 」 に一覧表示されます。
終了コード | 説明 |
---|---|
notwritten | 書き込みオプションが使用されていなかったため、PIN はディレクトリーに書き込み されませんでした。 |
writefailed | ツールはディレクトリーの変更を試みましたが、書き込み操作は失敗しました。 |
追加済み | このツールは、新しい PIN をディレクトリーに正常に追加されました。 |
replaced | ツールは古い PIN を新しい PIN に置き換わりました。これは、clobber オプションが使用されていることを意味します。 |
notreplaced | このツールは、古い PIN を新しい PIN に置き換えませんでした。これは、clobber オプションが使用されていなかったことを意味します。 |
ユーザーの PIN がすでに存在する場合は、setpin コマンドが 2 回実行される場合は変更されません。これにより、PIN を受け取ったユーザーの PIN を上書きせずに、新規ユーザー用に新しい PIN を作成できます。PIN を上書きするには、clobber オプションを使用します。
フィルターが正しいユーザーと一致していることを確認したら、write オプションを指定して setpin コマンドを再度実行し、出力 はファイルの名前に設定して、所有されていない PIN をキャプチャーします。出力ファイルの詳細は、「Output File」 を参照してください。
6.2.1. 入力ファイル
PIN ジェネレーターは、入力 引数で指定されたテキストファイルで変更する DN の一覧を受け取ることができます。入力ファイルが指定されている場合、ツールはフィルターによって返された DN を入力ファイル内の DN と比較し、入力ファイル内の一致する DN のみを更新します。
入力により、ユーザーは、変更する DN の正確なリストで PIN ジェネレーターを指定できます。また、すべての DN または特定の DN のプレーンテキストの PIN を使用して PIN ジェネレーターを指定することもできます。
入力ファイルを使用する場合は、一般的な状況が 2 つあります。
- ユーザーディレクトリーのすべてのエントリーに PIN が設定され、新しいユーザーが組織に参加している場合。新規ユーザーが証明書を取得するには、ディレクトリーに PIN が含まれている必要があります。他のユーザーエントリーを変更せずに、これら 2 つのエントリーに対してのみピンを生成する必要があります。複雑な LDAP フィルターを作成する代わりに、入力ファイルを使用すると一般的なフィルターを使用でき、変更されたエントリーは入力ファイルにリストされている 2 人のユーザーの DN に制限されます。
- Social Security 番号などの特定の値を PIN として使用する場合は、Social Security 番号を入力ファイルに配置して、それらの番号を PIN ジェネレーターに PIN として指定することができます。これらは、ハッシュ化された値として ディレクトリーに保存されます。
入力ファイルの形式は、status 行を除き、出力ファイル( 「Output File」を参照)の形式と同じです。入力ファイルでは、PIN はファイル内のすべての DN、特定の DN の場合は、または DN のいずれも設定できません。DN に PIN 属性がない場合、ツールはランダムな PIN を自動的に生成します。
入力ファイルの例を以下に示します。
dn:cn=user1, dc=example,dc=com dn:cn=user2, dc=example,dc=com ... dn:cn=user3, dc=example,dc=com
プレーンテキスト形式で DN にピンを指定することもできます。これらの PIN はコマンドライン引数に従ってハッシュ化されます。
dn:cn=user1, dc=example,dc=com pin:pl229Ab dn:cn=user2, dc=example,dc=com pin:9j65dSf ... dn:cn=user3, dc=example,dc=com pin:3knAg60
注記
ハッシュ化された PIN はツールに提供できません。
6.2.2. Output File
PIN Generator は、出力オプションで指定されたテキストファイルに 出力 をキャプチャできます。
出力には、以下の形式のレコードシーケンスが含まれます。
dn: user_dn1 pin: generated_pin1 status: status1 dn: user_dn2 pin: generated_pin2 status: status2 ... dn: user_dn# pin: generated_pin# status: status#
user_dn は、DN フィルターに一致する、または入力ファイルに一覧表示されている識別名です。デフォルトでは、区切り文字はセミコロン(;)またはコマンドラインで定義された文字です。generated_pin は、使用される長さパラメーターに応じて固定または変数の長さの文字列です。status は、表6.1「PIN ジェネレーターステータス 」 に一覧表示されている値の 1 つです。
各レコードの最初の行は常に DN です。ピン と ステータス の後続の行は任意です。このレコードは、Unix の行末シーケンス(\n)を使用して空の行で終わります。
6.2.3. PIN がディレクトリーに保存される方法
各 PIN は saltattribute 引数で指定された対応する LDAP 属性と連結されます(デフォルトではエントリー DN、推奨される値です)。この引数を指定しないと、DN が使用されます。
この文字列は、ハッシュ引数で指定されたルーチンでハッシュ化されます。デフォルトのアルゴリズムは SHA-1 ですが、受信ハッシュ化されたパスワードの使用を制限する Directory Server で動作するように、これを none に設定する必要があります。
1 つのバイトが追加され、使用されるハッシュタイプが示されます。PIN は以下のように保存されます。
byte[0] = X
X の値は、PIN の生成プロセス中に選択したハッシュアルゴリズムによって異なります。
X | ハッシュアルゴリズム |
---|---|
0 | SHA-1 |
1 | MD5 |
45 | none |
PIN は、base-64 でエンコードされた値としてではなく、バイナリー値としてディレクトリーに保存されます。
6.2.4. 終了コード
PIN Generator の実行が終了すると、終了方法を示す結果コードが返されます。これらの結果コードは 表6.2「PIN ジェネレーターによって返される結果コード」 に一覧表示されます。
結果コード | 説明 |
---|---|
0 | PIN の生成は成功しました。指定されたディレクトリー内のすべての DN に PIN が設定されました。 |
4 | このツールは、binddn パラメーターで指定されたユーザーとしてディレクトリーにバインドできませんでした。 |
5 | このツールは、output パラメーターで指定された出力ファイルを開けませんでした。 |
7 | コマンドライン引数の解析中にエラーが発生しました。 |
8 | このツールは、入力パラメーターで指定された入力ファイルを開けませんでした。 |
9 | ツールで内部エラーが発生しました。 |
10 | このツールは、入力ファイルで重複するエントリーを見つけました。 |
11 | このツールは、ディレクトリー内の saltattribute パラメーターで指定された salt 属性 を見つけませんでした。 |