8.2. 自動登録
自動登録では、ユーザーが認証プラグインモジュールで設定された方法で正常に認証されると、すぐにエンドエンティティー登録要求が処理されます。エージェントの承認は必要ありません。以下の認証プラグインモジュールが提供されます。
- ディレクトリーベースの登録エンドエンティティーは、ユーザー ID とパスワード、またはその DN とパスワードを使用して LDAP ディレクトリーに対して認証されます。「ディレクトリーベースの認証の設定」を参照してください。
- PIN ベースの登録。エンドエンティティーは、ディレクトリーエントリーのユーザー ID、パスワード、および PIN セットを使用して LDAP ディレクトリーに対して認証されます。「PIN ベースの登録の設定」を参照してください。
- 証明書ベースの認証の使用。ある種のエンティティー (エンドユーザーとサーバーやトークンなどの他のエンティティーの両方) は、CA によって発行された ID を証明する証明書を使用して CA に対して認証されます。これは、更新プロセスの認証に元の証明書が提示される、更新に最も一般的に使用されます。「証明書ベースの認証の使用」を参照してください。
AgentCertAuth.このメソッドは、リクエストを送信したエンティティーがサブシステムエージェントとして認証される場合に証明書要求を自動的に承認します。ユーザーは、エージェント証明書を提示してエージェントとして認証します。提示された証明書がサブシステムでエージェント証明書として認識される場合、CA は証明書要求を自動的に処理します。
この形式の自動認証は、サーバー証明書を登録する証明書プロファイルに関連付けることができます。
このプラグインはデフォルトで有効になっており、パラメーターはありません。
- フラットファイルベースの登録。ルーター (SCEP) の登録専用に使用されるテキストファイルには、IP アドレス、ホスト名、またはその他の識別子のリストと、通常はランダムな PIN であるパスワードが含まれています。ルーターはその ID と PIN を使用して CA に対して認証し、CA は提示する認証情報をテキストファイルの ID のリストと比較します。「フラットファイル認証の設定」を参照してください。
8.2.1. ディレクトリーベースの認証の設定
UidPwdDirAuth
および UdnPwdDirAuth
プラグインモジュールは、ディレクトリーベースの認証を実装します。LDAP ディレクトリーに対して認証するユーザー ID または DN およびパスワードを指定して、証明書にエンドユーザーを登録します。
UidPwdDirAuth
またはUdnPwdDirAuth
認証モジュールのいずれかのインスタンスを作成して、インスタンスを設定します。CA コンソールを開きます。
# pkiconsole -d nssdb -n 'optional client cert nickname' https://server.example.com:8443/ca
注記pkiconsole
は非推奨となり、今後のメジャーリリースで新しいブラウザーベースの UI に置き換えられます。pkiconsole
は代替 UI がリリースされるまで引き続き使用できますが、今後新しいブラウザーベースの UI が使用可能になった場合でも pki CLI のサポートおよび改良は継続されるため、現時点ではpkiconsole
に相当するコマンドラインの使用が推奨されます。Configuration タブで、ナビゲーションツリーの Authentication を選択します。
右側のペインには、現在設定されている認証インスタンスをリスト表示する Authentication Instance タブが表示されます。
注記UidPwdDirAuth
プラグインはデフォルトで有効になっています。Select Authentication Plug-in Implementation ウインドウが表示されます。
-
ユーザー ID およびパスワード認証に
UidPwdDirAuth
を選択するか、DN およびパスワード認証にUdnPwdDirAuth
を選択します。 Authentication Instance Editor ウィンドウで、以下のフィールドに入力します。
- Authentication Instance ID。デフォルトのインスタンス名を許可するか、新しい名前を入力します。
- dnpattern。ディレクトリー属性およびエントリー DN から形成するサブジェクト名パターンを表す文字列を指定します。
- ldapStringAttributes.エンドエンティティーの 認証 として考慮されるべき LDAP 文字列属性のリストを指定します。これらの属性に対応する値は、認証ディレクトリーから認証トークンにコピーし、証明書プロファイルによりサブジェクト名を生成するために使用されます。このパラメーターの値の入力は任意です。
ldapByteAttributes.エンドエンティティーの 認証 として考慮されるべき LDAP バイト (バイナリー) 属性のリストを指定します。指定した場合、これらの属性に対応する値は、ユーザーの証明書への追加情報の追加など、他のモジュールで使用するために認証ディレクトリーから認証トークンにコピーされます。
このパラメーターの値の入力は任意です。
- ldap.ldapconn.host.認証ディレクトリーの完全修飾 DNS ホスト名を指定します。
- ldap.ldapconn.port.認証ディレクトリーが要求をリッスンする TCP/IP ポートを指定します。ldap.ldapconn.secureConn. チェックボックスを選択した場合、これは SSL ポート番号になります。
- ldap.ldapconn.secureConn.認証ディレクトリーが Certificate System からの要求をリッスンするポートのタイプ (SSL または非 SSL) を指定します。これが SSL ポートである場合に選択します。
-
ldap.ldapconn.version.LDAP プロトコルのバージョンとして
2
または3
を指定します。バージョン 3.x 以降のすべての Directory Server は LDAPv3 であるため、デフォルトは3
です。 -
ldap.basedn.認証ディレクトリーを検索するためにベース DN を指定します。サーバーは、HTTP 入力 (ユーザーが登録フォームに入るもの) の
uid
フィールド値とベース DN を使用して LDAP 検索フィルターを構築します。 -
ldap.minConns.認証ディレクトリーで許可される最小接続数を指定します。許容値は、
1
から3
です。 -
ldap.maxConns.認証ディレクトリーで許可される接続の最大数を指定します。許容値は、
3
から10
です。
- をクリックします。認証インスタンスが設定され、有効になっている。
特定の証明書のポリシーを設定して、ユーザーの登録に使用する証明書プロファイルを設定します。証明書プロファイルの入力を設定して登録フォームをカスタマイズします。また、ユーザーを認証するためにプラグインが必要とする情報の入力を含めます。デフォルトの入力に、収集する必要のあるすべての情報が含まれていない場合には、サードパーティーツールで作成した要求を送信します。
プロファイルの設定に関する詳細は、「サブジェクト代替名に LDAP ディレクトリー属性値とその他の情報を挿入する」 を参照してください。
バインドされた LDAP 接続の設定
一部の環境では、認証に使用される LDAP サーバーの匿名バインドを禁止する必要があります。CA と LDAP サーバーとの間にバインドされた接続を作成するには、以下の設定を変更する必要があります。
CS.cfg
の以下の例に従って、ディレクトリーベースの認証を設定します。auths.instance.UserDirEnrollment.ldap.ldapBoundConn=true auths.instance.UserDirEnrollment.ldap.ldapauth.authtype=BasicAuth auths.instance.UserDirEnrollment.ldap.ldapauth.bindDN=cn=Directory Manager auths.instance.UserDirEnrollment.ldap.ldapauth.bindPWPrompt=externalLDAP externalLDAP.authPrefix=auths.instance.UserDirEnrollment cms.passwordlist=internaldb,replicationdb,externalLDAP
bindPWPrompt は、
password.conf
ファイルで使用されるタグまたはプロンプトです。また、cms.passwordlist および authPrefix オプションで使用される名前でもあります。CS.cfg
からタグまたはプロンプトをpassword.conf
でパスワードと併せて追加します。externalLDAP=your_password
外部認可の設定
また、ディレクトリーベースの認証プラグインを設定して、ユーザーのグループメンバーシップを評価することもできます。このプラグインを設定するには、CS.cfg
に以下のオプションを設定する必要があります。
-
groupsEnable は、グループの取得を可能にするブール値オプションです。デフォルト値は
false
です。 - groupsBasedn はグループのベース DN です。これは、デフォルトの basedn と異なる場合に指定する必要があります。
-
groups は、グループの DN コンポーネントです。デフォルト値は
ou=groups
です。 -
groupObjectClass は、グループオブジェクトクラス (
groupofuniquenames
、groupofnames
) のいずれかです。デフォルト値はgroupofuniquenames
です。 -
groupUseridName は、グループオブジェクトメンバー属性のユーザー ID 属性の名前です。デフォルト値は
cn
です。 -
useridName は、ユーザー ID DN コンポーネントの名前です。デフォルト値は
uid
です。 -
searchGroupUserByUserdn は、userdn または
${groupUserIdName}=${uid}
属性のグループオブジェクトメンバー属性を検索するかどうかを決定するブール値オプションです。デフォルト値はtrue
です。
以下に例を示します。
auths.instance.UserDirEnrollment.pluginName=UidPwdDirAuth auths.instance.UserDirEnrollment.ldap.basedn=cn=users,cn=accounts,dc=local auths.instance.UserDirEnrollment.ldap.groupObjectClass=groupofnames auths.instance.UserDirEnrollment.ldap.groups=cn=groups auths.instance.UserDirEnrollment.ldap.groupsBasedn=cn=accounts,dc=local auths.instance.UserDirEnrollment.ldap.groupsEnable=true auths.instance.UserDirEnrollment.ldap.ldapconn.host=local auths.instance.UserDirEnrollment.ldap.ldapconn.port=636 auths.instance.UserDirEnrollment.ldap.ldapconn.secureConn=true
最後に、/instance_path/ca/profiles/ca/profile_id.cfg
ファイルを変更して、CS.cfg
に定義された UserDirEnrollment
認可インスタンスを使用するようにプロファイルを設定し、および必要に応じて、グループに基づく許可用の ACL を提供します。以下に例を示します。
auth.instance_id=UserDirEnrollment authz.acl=group="cn=devlab-access,ou=engineering,dc=example,dc=com"
8.2.2. PIN ベースの登録の設定
PIN ベースの認証では、LDAP ディレクトリーでユーザーごとに PIN を設定し、それらの PIN をユーザーに配布してから、証明書要求に入力するときにユーザーにユーザー ID とパスワードとともに PIN を提供してもらいます。その後、ユーザーはユーザー ID とパスワードを使用して LDAP ディレクトリーと LDAP エントリーの PIN に対して認証されます。ユーザーが認証に成功すると、リクエストは自動的に処理され、新しい証明書が発行されます。
Certificate System は、Directory Server に必要なスキーマを Directory Server に追加し、各ユーザーの PIN を生成するツール setpin
を提供します。
PIN ツールは、以下の機能を実行します。
- PIN に必要なスキーマを LDAP ディレクトリーに追加します。
- 設定した PIN に読み取り/書き込みパーミッションを持つ PIN マネージャーユーザーを追加します。
- PIN の使用後に PIN の削除を許可するように ACI を設定し、PIN マネージャーに PIN の読み取り/書き込み権限を付与し、PIN を作成または変更できないようにします。
- 各ユーザーエントリーに PIN を作成します。
PIN ツールを使用して PIN に必要なスキーマを追加し、ユーザーエントリーに PIN を追加してから PIN をユーザーに配布します。
-
/usr/share/pki/native-tools/
ディレクトリーを開きます。 -
テキストエディターで
setpin.conf
ファイルを開きます。 ファイルに概説されている手順に従って、適切な変更を加えます。
通常、更新が必要なパラメーターは、Directory Server のホスト名、Directory Manager のバインドパスワード、および PIN マネージャーのパスワードです。
setpin.conf
ファイルを指すoptfile
オプションを指定して、setpin
コマンドを実行します。# setpin optfile=/usr/share/pki/native-tools/setpin.conf
このツールは、新しい属性 (デフォルトは
pin
) および新しいオブジェクトクラス (デフォルトはpinPerson
) でスキーマを変更し、pinmanager
ユーザーを作成し、ACI を設定して、pinmanager
ユーザーのみがpin
属性を編集できるようにします。特定のユーザーエントリーの PIN を生成するか、ユーザー定義の PIN を指定する場合は、これらのエントリーの DN を指定して入力ファイルを作成します。以下に例を示します。
dn:uid=bjensen,ou=people,dc=example,dc=com dn:uid=jsmith,ou=people,dc=example,dc=com dn:jtyler,ou=people,dc=example,dc=com ...
-
setpin
コマンドのセットアップモードを無効にします。setup
行をコメントアウトするか、値を no に変更します。# vim /usr/share/pki/native-tools/setpin.conf setup=no
セットアップモードでは、必要なユーザーとオブジェクトクラスが作成されますが、セットアップモードでは、ツールは PIN を生成しません。
setpin
コマンドを実行して、ディレクトリーに PIN を作成します。ヒント実際にディレクトリーを変更せずに PIN のリストを生成するには、まず write オプションなしでツールをテスト実行します。
以下に例を示します。
# setpin host=yourhost port=9446 length=11 input=infile output=outfile write "binddn=cn=pinmanager,o=example.com" bindpw="password" basedn=o=example.com "filter=(uid=u)" hash=sha256*
WARNINGhash 引数を
none
に設定しないでください。hash=none
を指定してsetpin
コマンドを実行すると、ピンはプレーンテキストとしてユーザー LDAP エントリーに保存されます。必要な認証方法の設定が完了したら、出力ファイルを使用して PIN をユーザーに配信します。
PIN ベースの登録が機能することを確認したら、PIN をユーザーに配信して、登録時に使用できるようにします。PIN のプライバシーを保護するには、安全で帯域外での配信方法を使用します。証明書プロファイルにポリシーを設定して、ユーザーを登録します。証明書プロファイルポリシーの詳細は、3章証明書プロファイル (証明書発行ルールの作成) を参照してください。
UidPwdPinDirAuth
認証プラグインのインスタンスを作成して設定します。CA コンソールを開きます。
# pkiconsole -d nssdb -n 'optional client cert nickname' https://server.example.com:8443/ca
注記pkiconsole
は非推奨となり、今後のメジャーリリースで新しいブラウザーベースの UI に置き換えられます。pkiconsole
は代替 UI がリリースされるまで引き続き使用できますが、今後新しいブラウザーベースの UI が使用可能になった場合でも pki CLI のサポートおよび改良は継続されるため、現時点ではpkiconsole
に相当するコマンドラインの使用が推奨されます。Configuration タブで、ナビゲーションツリーの Authentication を選択します。
右側のペインには、現在設定されている認証インスタンスをリスト表示する Authentication Instance タブが表示されます。
Select Authentication Plug-in Implementation ウインドウが表示されます。
-
UidPwdPinDirAuth
プラグインモジュールを選択します。 Authentication Instance Editor ウィンドウで、以下のフィールドに入力します。
- Authentication Instance ID。デフォルトのインスタンス名を使用するか、新しい名前を入力します。
- removePin.エンドユーザーの認証に成功した後に、認証ディレクトリーから PIN を削除するかどうかを設定します。ディレクトリーから PIN を削除すると、ユーザーが複数回登録できなくなるため、複数の証明書を取得できなくなります。
-
pinAttr.PIN の認証ディレクトリー属性を指定します。
PIN Generator
ユーティリティーは、setpin.conf
ファイルのobjectclass
パラメーターの値に属性を設定します。このパラメーターのデフォルト値はpin
です。 - dnpattern。ディレクトリー属性およびエントリー DN から形成するサブジェクト名パターンを表す文字列を指定します。
- ldapStringAttributes.エンドエンティティーの 認証 として考慮されるべき LDAP 文字列属性のリストを指定します。このパラメーターの値の入力は任意です。
ldapByteAttributes.エンドエンティティーの 認証 として考慮されるべき LDAP バイト (バイナリー) 属性のリストを指定します。指定した場合、これらの属性に対応する値は、ユーザーの証明書への追加情報の追加など、他のモジュールで使用するために認証ディレクトリーから認証トークンにコピーされます。
このパラメーターの値の入力は任意です。
- ldap.ldapconn.host.認証ディレクトリーの完全修飾 DNS ホスト名を指定します。
- ldap.ldapconn.port.認証ディレクトリーが Certificate System からのリクエストをリッスンする TCP/IP ポートを指定します。
- ldap.ldapconn.secureConn.認証ディレクトリーが要求をリッスンするポートの、SSL タイプ、SSL、または非 SSL を指定します。これが SSL ポートである場合に選択します。
-
ldap.ldapconn.version.LDAP プロトコルのバージョンとして
2
または3
を指定します。デフォルトでは、3.x 以降のすべての Directory Server バージョンが LDAPv3 であるため、これは3
になります。 - ldap.ldapAuthentication.bindDN.認証ディレクトリーから PIN を削除する際にバインドするユーザーエントリーを指定します。removePin チェックボックスが選択されている場合に限り、このパラメーターを指定します。ディレクトリー内の PIN 属性のみを変更するパーミッションを持つ別のユーザーエントリーを作成して使用することが推奨されます。たとえば、ディレクトリーのコンテンツ全体を変更する権限があるため、Directory Manager のエントリーは使用しないでください。
-
password.
ldap.ldapauthbindDN
パラメーターで指定された DN に関連付けられたパスワードを指定します。変更を保存したら、サーバーはパスワードをシングルサインオンパスワードキャッシュに保存して、後続の起動時に使用します。このパラメーターは、removePin チェックボックスが選択されている場合にのみ設定する必要があります。 -
ldap.ldapAuthentication.clientCertNickname.PIN を削除する認証ディレクトリーへの SSL クライアント認証に使用する証明書のニックネームを指定します。証明書が有効で、認証ディレクトリーの証明書データベースで信頼済み CA によって署名されていること、および認証ディレクトリーの
certmap.conf
ファイルがディレクトリーの DN に正しくマッピングするように設定されていることを確認してください。これは PIN の削除のみに必要です。 ldap.ldapAuthentication.authtype.認証ディレクトリーから PIN を削除するのに必要な認証タイプ、Basic 認証、または SSL クライアント認証を指定します。
- BasicAuth は Basic 認証を指定します。このオプションを使用すると、ldap.ldapAuthentication.bindDN および password パラメーターの正しい値を入力します。サーバーは ldap.ldapAuthentication.bindDN 属性の DN を使用してディレクトリーにバインドします。
-
SslClientAuth は、SSL クライアント認証を指定します。このオプションを使用すると、ldap.ldapconn.secureConn パラメーターの値を
true
に設定し、証明書のニックネームの ldap.ldapAuthentication.clientCertNickname パラメーターの値を、SSL クライアント認証に使用する証明書のニックネームに設定します。
-
ldap.basedn.認証ディレクトリーを検索するためのベース DN を指定します。サーバーは、HTTP インプット (ユーザーが登録フォームに入力するもの) および LDAP 検索フィルターを構築するためのベース DN から
uid
フィールドの値を使用します。 -
ldap.minConns.認証ディレクトリーで許可される最小接続数を指定します。許容値は、
1
から3
です。 -
ldap.maxConns.認証ディレクトリーで許可される接続の最大数を指定します。許容値は、
3
から10
です。
- 証明書プロファイルで入力を設定して、登録フォームをカスタマイズします。プラグインがユーザーを認証するために必要な情報を含めます。デフォルトの入力に、収集する必要のあるすべての情報が含まれていない場合には、サードパーティーツールで作成した要求を送信します。
8.2.3. 証明書ベースの認証の使用
証明書ベースの認証 は、要求側の ID を検証し、送信されるリクエストを自動的に検証し、認証する証明書が表示される場合です。これは、元の証明書がユーザー、サーバー、およびアプリケーションによって提示され、その証明書が要求を認証するのに使用される場合に、更新プロセスに最も一般的に使用されます。
証明書の初回要求に証明書ベースの認証を使用する場合は、その他の状況があります。たとえば、トークンに汎用証明書を一括で読み込んで、ユーザーがユーザー証明書に登録するときにユーザーを認証するために使用することも、ユーザーに署名証明書を発行して、暗号化証明書の要求を認証するために使用することもできます。
証明書ベースの認証モジュール (SSLclientCertAuth
) はデフォルトで有効になっており、この認証方法は任意のカスタム証明書プロファイルで参照できます。
8.2.4. フラットファイル認証の設定
ルーター証明書は無作為に生成される PIN を使用して登録され、認証されます。CA は flatFileAuth
認証モジュールを使用して、ルーターの認証情報が含まれるテキストファイルを処理します。
8.2.4.1. flatFileAuth モジュールの設定
フラットファイル認証はすでに SCEP 登録用に設定されていますが、フラットファイルの場所とその認証パラメーターを編集できます。
CA コンソールを開きます。
# pkiconsole -d nssdb -n 'optional client cert nickname' https://server.example.com:8443/ca
注記pkiconsole
は非推奨となり、今後のメジャーリリースで新しいブラウザーベースの UI に置き換えられます。pkiconsole
は代替 UI がリリースされるまで引き続き使用できますが、今後新しいブラウザーベースの UI が使用可能になった場合でも pki CLI のサポートおよび改良は継続されるため、現時点ではpkiconsole
に相当するコマンドラインの使用が推奨されます。- Configuration タブで、ナビゲーションツリーの Authentication を選択します。
flatFileAuth 認証モジュールを選択します。
- をクリックします。
ファイルの場所と名前を変更するには、fileName フィールドをリセットします。
authentication name パラメーターを変更するには、keyAttributes の値を、CN などの SCEP 登録フォームで送信された別の値にリセットします。
UID,CN
のように、コンマで区切って複数の name パラメーターを使用することもできます。パスワードパラメーター名を変更するには、authAttributes
フィールドをリセットします。- 編集を保存します。
8.2.4.2. flatfile.txt の編集
同じ flatfile.txt
ファイルを使用して、SCEP 登録をすべて認証します。このファイルは、新規 PIN がルーターに発行されるたびに手動で更新する必要があります。
デフォルトでは、このファイルは /var/lib/pki/pki-ca/ca/conf/
にあり、認証エントリーごとに 2 つのパラメーター、サイトの UID (通常は IPv4 または IPv6)、およびルーターが発行する PIN の 2 つのパラメーターを指定します。
UID:192.168.123.123 PIN:HU89dj
各エントリーの後には空白行が続く必要があります。以下に例を示します。
UID:192.168.123.123 PIN:HU89dj UID:12.255.80.13 PIN:fiowIO89 UID:0.100.0.100 PIN:GRIOjisf
認証エントリーが空の行で区切られていない場合、ルーターが CA に対して認証を試みたときに、失敗します。以下に例を示します。
... flatfile.txt entry ... UID:192.168.123.123 PIN:HU89dj UID:12.255.80.13 PIN:fiowIO89 ... error log entry ... [13/Jun/{YEAR}:13:03:09][http-9180-Processor24]: FlatFileAuth: authenticating user: finding user from key: 192.168.123.123 [13/Jun/{YEAR}:13:03:09][http-9180-Processor24]: FlatFileAuth: User not found in password file.