第23章 Identity Management でのスマートカード認証
23.1. Identity Management サーバーのスマートカードリンクの管理
- スマートカードから証明書を抽出する必要がある場合は「スマートカードからの証明書のエクスポート」を参照してください。
23.1.1. スマートカードからの証明書のエクスポート
- スマートカードをリーダーに挿入します。
- 以下のコマンドを使用してスマートカードの証明書を表示します。出力で認証に使用する証明書を特定して、そのニックネームをメモします。
$
certutil -L -d /etc/pki/nssdb/ -h all
Certificate Nickname Trust Attributes SSL,S/MIME,JAR/XPI my_certificate CT,C,C - 証明書のニックネームを使用してファイルに証明書を抽出します。たとえば、
user.crt
という名前のファイルに Base64 形式の証明書を抽出するには以下を実行します。$
certutil -L -d /etc/pki/nssdb/ -n 'my_certificate' -r | base64 -w 0 > user.crt
base64
ユーティリティーは coreutils パッケージに含まれます。
23.1.2. ユーザーアカウントのスマートカード証明書へのリンク
- 完全な証明書のブロブを使用する
- Identity Management ユーザーは、「証明書とユーザーアカウントの間のリンク作成」を参照してください。また、「証明書およびユーザーアカウントの間のリンクの削除」を使用してこのリンクを削除してください。
- Active Directory ユーザーは「Active Directory のユーザーアカウントとスマートカードのリンク」を参照してください。
- 証明書マッピングを使用する: 「アイデンティティーマッピングの設定」
23.1.2.1. 証明書とユーザーアカウントの間のリンク作成
コマンドライン: 証明書とユーザーアカウントの間のリンク作成
- Identity Management の管理者としてログインします。
$
kinit admin
ipa user-add-cert
コマンドを使用してユーザーアカウントにスマートカード証明書を追加します。以下の例を示します。$
cat cert.pem | tail -n +2 | head -n -1 | tr -d '\r\n' | ipa user-add-cert idm_user
Web UI: 証明書とユーザーアカウントの間のリンク作成
- Certificates エントリーの横にある をクリックして証明書を入力します。
- ユーザーアカウントページの上部にあるをクリックします。
関連資料
- 外部の証明局 (CA) が発行する証明書の追加と削除に関する詳細は、「外部 CA 発行の証明書の管理」を参照します。
23.1.2.2. 証明書およびユーザーアカウントの間のリンクの削除
コマンドライン: 証明書とユーザーアカウントの間のリンク作成
- Identity Management の管理者としてログインします。
$
kinit admin
- 必要なユーザーアカウントを検索します。
$
ipa user-show idm_user
User login: idm_user First name: first_name Last name: last_name ... Certificate: MIIC3... - アカウントから証明書を削除します。
$
ipa user-remove-cert idm_user --certificate MIIC3...
Web UI: 証明書とユーザーアカウントの間のリンク削除
- 削除する証明書の横にあるをクリックして、 を選択します。
関連資料
23.1.2.3. Active Directory のユーザーアカウントとスマートカードのリンク
コマンドライン: Active Directory のユーザーアカウントとスマートカードのリンク
- Identity Management の管理者としてログインします。
$
kinit admin
- ユーザー証明書の環境変数 (
CERT
) を作成します。$
CERT=`cat cert.pem | tail -n +2 | head -n -1 | tr -d '\r\n'`
- 新規 ID オーバーライドを作成してし、ユーザー証明書を ID ビューに追加します。以下の手順では、Default Trust View を使用しています。
$
ipa idoverrideuser-add 'Default Trust View' ad_user@ad.example.com --certificate $CERT
Web UI: Active Directory のユーザーアカウントとスマートカードのリンク
- 新規 ID オーバーライドを作成して、ユーザー証明書を ID ビューに追加します。Add User ID override フォームで必要な情報を入力します。をクリックして、
関連資料
- ID ビューの管理に関する詳細は「18章ID ビュー」を参照してください。
- Default Trust View の詳細は「Active Directory 環境での ID ビューの使用」を参照してください。
23.1.2.4. アイデンティティーマッピングの設定
23.1.2.4.1. Identity Management でのアイデンティティーマッピング
- マッピングルール
- マッピングルールは、証明書を 1 つ以上のユーザーアカウントに関連付けます (または マッピングします)。このルールで、対象のユーザーアカウントと証明書を関連付ける LDAP 検索フィルターを定義します。発行した証明局 (CA) が違う証明書には、異なるプロパティーが設定されており、異なるドメインで使用される可能性があります。そのため、Identity Management は条件なしでマッピングルールを適用せず、適切な証明書にのみ適用します。照合ルール を使用して、適切な証明書を定義します。
- 照合ルール
- 照合ルールは、マッピングルールを適用する CA の証明書を選択します。
- ドメイン一覧
- ドメイン一覧は、アイデンティティーマッピングルールを処理する際に Identity Management がユーザーを検索する DNS ドメイン名を指定します。
注記
ドメインが指定されていない場合は、Identity Management により、クライアントが所属するローカルドメインのユーザーのみが検索されます。 - Priority
- 複数のルールが証明書に適用可能な場合には、最も優先順位の高いルールが先に適用され、他のルールはすべて無視されます。
- 数値が低いほど、アイデンティティーマッピングの優先度が高くなります。たとえば、優先度が 1 のルールは、2 のルールより優先順位が高くなります。
- ルールに優先順位の値が定義されていない場合には、優先順位が最も低くなります。
23.1.2.4.2. 証明書のアイデンティティーマッピングルールの作成
コマンドライン: 証明書のアイデンティティーマッピングルールの作成
- 管理者としてログインします。
$
kinit admin
ipa certmaprule-add
コマンドを使用してルールを作成します。アイデンティティーマッピングルールのコンポーネントを指定するには、以下のオプションを使用します。--maprule
はマッピングルールを定義します。--matchrule
は照合ルールを定義します。--domain
はユーザーエントリーを検索するドメインを定義します。--priority
はアイデンティティーマッピングルールの優先順位を定義します。
たとえば、マッピングルールと照合ルールのみで構成される単純なアイデンティティーマッピングルールを作成するには以下を実行します。$
ipa certmaprule-add rule_name --matchrule '<ISSUER>CN=Smart Card CA,O=EXAMPLE.ORG' --maprule '(ipacertmapdata=X509:<I>{issuer_dn!nss_x500}<S>{subject_dn!nss_x500})'
------------------------------------------------------- Added Certificate Identity Mapping Rule "rule_name" ------------------------------------------------------- Rule name: rule_name Mapping rule: (ipacertmapdata=X509:<I>{issuer_dn!nss_x500}<S>{subject_dn!nss_x500}) Matching rule: <ISSUER>CN=Smart Card CA,O=EXAMPLE.ORG Enabled: TRUEこのルールは、スマートカード証明書の件名や発行者を、ユーザーアカウントのipacertmapdata
属性の値とリンクします。
Web UI: 証明書のアイデンティティーマッピングルールの作成
- ルールのコンポーネントの情報を入力してを追加します。
関連資料
- 証明書マッピングおよび照合ルールの構文に関する詳細は sss-certmap(5) man ページを参照してください。
ipa certmaprule-add
コマンドの使用方法に関する情報は--help
オプションを指定してコマンドを実行してください。- アイデンティティーマッピングの管理に関する他のコマンドは、
ipa help certmap
コマンドを使用します。
23.1.2.4.3. ユーザーアカウントとスマートカード証明書のリンク
ipacertmapdata
属性に証明書の件名と発行者を保存します。
コマンドライン: ユーザーアカウントとスマートカード証明書のリンク
- 証明書にアクセスできる場合には、完全な証明書のブロブを使用します。
$
CERT=`cat cert.pem | tail -n +2| head -n -1 | tr -d '\r\n'`
$ipa user-add-certmapdata idm_user --certificate $CERT
-------------------------------------------- Added certificate mappings to user "idm_user" -------------------------------------------- User login: idm_user Certificate mapping data: X509:<I>O=EXAMPLE.ORG,CN=Smart Card CA<S>CN=test,O=EXAMPLE.ORG - 証明書にアクセスできるが件名と発行者が分かっている場合には
--subject
および--issuer
オプションを使用します。$
ipa user-add-certmapdata idm_user --subject "O=EXAMPLE.ORG,CN=test" --issuer "CN=Smart Card CA,O=EXAMPLE.ORG"
-------------------------------------------- Added certificate mappings to user "idm_user" -------------------------------------------- User login: idm_user Certificate mapping data: X509:<I>O=EXAMPLE.ORG,CN=Smart Card CA<S>CN=test,O=EXAMPLE.ORG - マッピングの形式に精通している場合には、マッピングデータを直接指定してください。
$
ipa user-add-certmapdata idm_user 'X509:<I>O=EXAMPLE.ORG,CN=Smart Card CA<S>CN=test,O=EXAMPLE.ORG'
-------------------------------------------- Added certificate mappings to user "idm_user" -------------------------------------------- User login: idm_user Certificate mapping data: X509:<I>O=EXAMPLE.ORG,CN=Smart Card CA<S>CN=test,O=EXAMPLE.ORG
Web UI: ユーザーアカウントとスマートカード証明書のリンク
- Certificate mapping data エントリーの横にある をクリックします。
図23.1 証明書マッピングデータの追加
- Add Certificate Mapping Data フォームで、必要な情報を入力します。以下のいずれかを指定します。
- Certificate で完全な証明書ブロブを指定します。
- Issuer and subject で件名と発行者を指定します。
- Certificate mapping data でマッピングデータを直接指定します。
関連資料
ipa user-add-certmapdata
コマンドの詳細は--help
オプションを指定してコマンドを実行してください。
23.1.2.4.4. アイデンティティーマッピングルールの例
例23.1 Identity Management ユーザーの Active Directory の証明書
$ipa certmaprule-add ad_cert_for_ipa_users \
--maprule='(ipacertmapdata=X509:<I>{issuer_dn!nss_x500}<S>{subject_dn!nss_x500})' \
--matchrule='<ISSUER>CN=AD-ROOT-CA,DC=ad,DC=example,DC=com' \
--domain=idm.example.com
例23.2 Active Directory ユーザーの Active Directory 証明書
$ipa certmaprule-add ad_cert_for_ad_users \
--maprule='(altSecurityIdentities=X509:<I>{issuer_dn!ad_x500}<S>{subject_dn!ad_x500})' \
--matchrule='<ISSUER>CN=AD-ROOT-CA,DC=ad,DC=example,DC=com' \
--domain=ad.example.com
例23.3 Identity Management と Active Directory ユーザー両方の Active Directory 証明書
$ipa certmaprule-add ad_cert_for_ipa_and_ad_users \
--maprule='(|(ipacertmapdata=X509:<I>{issuer_dn!nss_x500}<S>{subject_dn!nss_x500})(altSecurityIdentities=X509:<I>{issuer_dn!ad_x500}<S>{subject_dn!ad_x500}))' \
--matchrule='<ISSUER>CN=AD-ROOT-CA,DC=ad,DC=example,DC=com' \
--domain=ad.example.com
--maprule
オプションの絞り込み定義には以下の条件が含まれます。
ipacertmapdata=X509:<I>{issuer_dn!nss_x500}<S>{subject_dn!nss_x500}
は、スマートカード証明書の件名および発行者と、Identity Management ユーザーアカウントのipacertmapdata
属性値をリンクするフィルターです。altSecurityIdentities=X509:<I>{issuer_dn!ad_x500}<S>{subject_dn!ad_x500}
は、スマートカード証明書の件名および発行者と Active Directory ユーザーアカウントのaltSecurityIdentities
属性値をリンクするフィルターです。
--maprule
オプションのフィルター定義では、論理演算子 |
(or) が使用できるので、複数の条件を指定できます。今回の場合、このルールは 1 つ以上の条件を満たす全ユーザーアカウントをマッピングします。
例23.4 Identity Management および Active Directory ユーザーの Identity Management 証明書
$ipa certmaprule-add ipa_cert_for_ad_users \
--maprule='(|(userCertificate;binary={cert!bin})(ipacertmapdata=X509:<I>{issuer_dn!nss_x500}<S>{subject_dn!nss_x500})(altSecurityIdentities=X509:<I>{issuer_dn!ad_x500}<S>{subject_dn!ad_x500}))' \
--matchrule='<ISSUER>CN=Certificate Authority,O=REALM.EXAMPLE.COM' \
--domain=idm.example.com --domain=ad.example.com
--maprule
オプションの絞り込み定義には以下の条件が含まれます。
userCertificate;binary={cert!bin}
は、Identity Management または Active Directory のユーザーエントリー (全証明書を含む) を返すフィルターです。ipacertmapdata=X509:<I>{issuer_dn!nss_x500}<S>{subject_dn!nss_x500}
は、スマートカード証明書の件名および発行者と、Identity Management ユーザーアカウントのipacertmapdata
属性値をリンクするフィルターです。altSecurityIdentities=X509:<I>{issuer_dn!ad_x500}<S>{subject_dn!ad_x500}
は、スマートカード証明書の件名および発行者と Active Directory ユーザーアカウントのaltSecurityIdentities
属性値をリンクするフィルターです。
--maprule
オプションのフィルター定義では、論理演算子 |
(or) が使用できるので、複数の条件を指定できます。今回の場合、このルールは 1 つ以上の条件を満たす全ユーザーアカウントをマッピングします。
23.1.2.4.5. 証明書の発行者を照合ルールに変換する例
例23.5 Identity Management が発行する証明書の発行者の変換
# openssl x509 -in user.crt -noout -issuer
issuer= /O=REALM.EXAMPLE.COM/CN=Certificate Authority
'<ISSUER>CN=Certificate Authority,O=REALM.EXAMPLE.COM'
例23.6 メールを含む証明書の発行者の変換
# openssl x509 -in expired_user.pem -noout -issuer
issuer= /C=US/ST=North Carolina/L=Raleigh/O=Red Hat/OU=QE/CN=ExampleCA/emailAddress=admin@example.com
'<ISSUER>emailAddress=admin@example.com,CN=ExampleCA,OU=QE,O=Red Hat,L=Raleigh,ST=North Carolina,C=US'
23.1.2.5. 関連資料
- スマートカードの証明書のリンクを検証するには「指定の証明書と合致するユーザーの検索」を参照してください。
- 証明書のアイデンティティーマッピングに関する詳しい情報は、アップストリームの SSSD ドキュメントの「Matching and Mapping Certificates」を参照してください。
23.1.3. 指定の証明書と合致するユーザーの検索
コマンドライン: 指定の証明書と合致するユーザーの検索
- 管理者としてログインします。
$
kinit admin
- ユーザーを検索するには、以下のいずれかを指定します。
- 証明書ファイルの名前:
$
ipa certmap-match cert.pem
-------------- 1 user matched -------------- Domain: IDM.EXAMPLE.COM User logins: idm_user ---------------------------- Number of entries returned 1 ---------------------------- - 証明書の内容:
$
ipa certmap-match --certificate="MII...."
-------------- 1 user matched -------------- Domain: IDM.EXAMPLE.COM User logins: idm_user ---------------------------- Number of entries returned 1 ----------------------------ユーザーエントリーに完全な証明書のブロブが含まれる場合には、このコマンドは、信頼される Active Directory ドメインでユーザーも返します。$
ipa certmap-match --certificate="MII...."
--------------- 2 users matched --------------- Domain: ad.domain.com User logins: ad_user Domain: IDM.EXAMPLE.COM User logins: idm_user ---------------------------- Number of entries returned 2 ----------------------------
Web UI: 指定の証明書と合致するユーザーの検索
- Certificate フィールドの証明書の内容を入力して をクリックします。Identity Management は、Matched Users に証明書と合致するユーザーを表示します。
図23.2 証明書と合致するユーザーの表示
関連資料
- 証明書のアイデンティティーマッピングのコマンドに関する詳細は、
ipa help certmap
コマンドを使用します。 ipa certmap-match
コマンドの詳細は--help
オプションを指定してコマンドを実行してください。
23.1.4. 関連資料
- Red Hat Certificate System のアプリケーション、Enterprise Security Client を使用して個人の証明書やキーを管理する情報は、Certificate System ドキュメントの「Managing Smart Cards with the Enterprise Security Client」を参照してください。