10.5. 証明書マッピングとマッチングルールのトラブルシューティング
スマートカードでの認証に問題がある場合は、スマートカード証明書がユーザーに正しくリンクされていることを確認してください。デフォルトでは、ユーザーエントリーに usercertificate
属性の一部として完全な証明書が含まれる場合、証明書はユーザーに関連付けられます。ただし、証明書マッピングルールを定義している場合は、証明書をユーザーに関連付ける方法を変更している可能性があります。
スマートカードを使用して SSH で認証する場合は、Identity Management(IdM) のユーザーエントリーに完全な証明書を追加する必要があります。スマートカードを使用して SSH を使用した認証を行っていない場合は、ipa user-add-certmapdata
コマンドを使用して証明書マッピングデータを追加できます。
10.5.1. 証明書がユーザーにどのようにマッピングされているかを確認する
デフォルトでは、ユーザーエントリーに usercertificate
属性の一部として完全な証明書が含まれる場合、証明書はユーザーに関連付けられます。ただし、証明書マッピングルールを定義している場合は、証明書をユーザーに関連付ける方法を変更している可能性があります。証明書マッピングルールを確認するには、次の手順に従ってください。
前提条件
- Identity Management(IdM) サーバーおよびクライアントを、スマートカードで使用するようにインストールおよび設定している。
- スマートカードリーダーを検出し、スマートカードの内容を表示できる。システムでのスマートカードアクセスのテスト を参照してください。
- スマートカード証明書を IdM ユーザーにマッピングした。スマートカードにおける認証を設定するための証明書マッピングルール を参照してください。
手順
IdM 用に現在設定されている証明書マッピングルールを確認します。
ipa certmaprule-find
# ipa certmaprule-find ------------------------------------------- 1 Certificate Identity Mapping Rule matched ------------------------------------------- Rule name: smartcardrule Mapping rule: (ipacertmapdata=X509:<I>{issuer_dn!nss_x500}<S>{subject_dn!nss_x500}) Matching rule: <ISSUER>CN=Certificate Authority,O=IDM.EXAMPLE.COM Enabled: TRUE ---------------------------- Number of entries returned 1 ----------------------------
Copy to Clipboard Copied! 以下のマッピングルールのいずれかが定義されていることが予想されます。
-
ipacertmapdata
は、IdM ユーザーエントリーのcertmapdata
属性が使用されていることを示します。 -
altSecurityIdentities
は、Active Directory のユーザーエントリー名マッピング属性が使用されることを指定します。 -
userCertificate;binary=
は、IdM または AD のいずれかの証明書全体が使用されていることを示します。
多数のマッチングオプションを定義できますが、通常設定されたオプションの一部は以下のようになります。
-
<ISSUER>CN=[…]
は、使用されている証明書の発行者属性がこれと一致することを確認するためにチェックされることを指定します。 -
<SUBJECT>.*,DC=MY,DC=DOMAIN
は、証明書のサブジェクトがチェックされていることを示します。
-
IdM サーバーの
/etc/sssd/sssd.conf
ファイルにdebug_level = 9
を追加して、System Security Services Daemon (SSSD) ログを有効にします。[domain/idm.example.com] ... debug_level = 9
[domain/idm.example.com] ... debug_level = 9
Copy to Clipboard Copied! SSSD を再起動します。
systemctl restart sssd
# systemctl restart sssd
Copy to Clipboard Copied! マッピングが正しく読み込まれる場合は、
/var/log/sssd/sssd_idm.example.com.log
ファイルに以下のエントリーが表示されるはずです。[be[idm.example.com]] [sdap_setup_certmap] (0x4000): Trying to add rule [smartcardrule][-1][<ISSUER>CN=Certificate Authority,O=IDM.EXAMPLE.COM][(|(userCertificate;binary={cert!bin})(ipacertmapdata=X509:<I>{issuer_dn!nss_x500}<S>{subject_dn!nss_x500}))].
[be[idm.example.com]] [sdap_setup_certmap] (0x4000): Trying to add rule [smartcardrule][-1][<ISSUER>CN=Certificate Authority,O=IDM.EXAMPLE.COM][(|(userCertificate;binary={cert!bin})(ipacertmapdata=X509:<I>{issuer_dn!nss_x500}<S>{subject_dn!nss_x500}))].
Copy to Clipboard Copied! マッピングルールに無効な構文が含まれる場合は、以下のようなエントリーがログファイルに表示されます。
[be[idm.example.com]]] [sss_certmap_init] (0x0040): sss_certmap initialized. [be[idm.example.com]]] [ipa_certmap_parse_results] (0x4000): Trying to add rule [smartcardrule][-1][<ISSUER>CN=Certificate Authority,O=IDM.EXAMPLE.COM][(ipacertmapdata=X509:<I>{issuer_dn!x509}<S>{subject_dn})]. [be[idm.example.com]]] [parse_template] (0x0040): Parse template invalid. [be[idm.example.com]]] [parse_ldap_mapping_rule] (0x0040): Failed to add template. [be[idm.example.com]]] [parse_mapping_rule] (0x0040): Failed to parse LDAP mapping rule. [be[idm.example.com]]] [ipa_certmap_parse_results] (0x0020): sss_certmap_add_rule failed for rule [smartcardrule], skipping. Please check for typos and if rule syntax is supported. [be[idm.example.com]]] [ipa_subdomains_certmap_done] (0x0040): Unable to parse certmap results [22]: Invalid argument [be[idm.example.com]]] [ipa_subdomains_refresh_certmap_done] (0x0020): Failed to read certificate mapping rules [22]: Invalid argument
[be[idm.example.com]]] [sss_certmap_init] (0x0040): sss_certmap initialized. [be[idm.example.com]]] [ipa_certmap_parse_results] (0x4000): Trying to add rule [smartcardrule][-1][<ISSUER>CN=Certificate Authority,O=IDM.EXAMPLE.COM][(ipacertmapdata=X509:<I>{issuer_dn!x509}<S>{subject_dn})]. [be[idm.example.com]]] [parse_template] (0x0040): Parse template invalid. [be[idm.example.com]]] [parse_ldap_mapping_rule] (0x0040): Failed to add template. [be[idm.example.com]]] [parse_mapping_rule] (0x0040): Failed to parse LDAP mapping rule. [be[idm.example.com]]] [ipa_certmap_parse_results] (0x0020): sss_certmap_add_rule failed for rule [smartcardrule], skipping. Please check for typos and if rule syntax is supported. [be[idm.example.com]]] [ipa_subdomains_certmap_done] (0x0040): Unable to parse certmap results [22]: Invalid argument [be[idm.example.com]]] [ipa_subdomains_refresh_certmap_done] (0x0020): Failed to read certificate mapping rules [22]: Invalid argument
Copy to Clipboard Copied! マッピングルールの構文を確認してください。
ipa certmaprule-show smartcardrule
# ipa certmaprule-show smartcardrule Rule name: smartcardrule Mapping rule: (|(userCertificate;binary={cert!bin})(ipacertmapdata=X509:<I>{issuer_dn!nss_x500}<S>{subject_dn!nss_x500})) Matching rule: <ISSUER>CN=Certificate Authority,O=IDM.EXAMPLE.COM Domain name: ipa.test Enabled: TRUE
Copy to Clipboard Copied! 必要に応じて、証明書マッピングルールを変更します。
ipa certmaprule-mod smartcardrule --maprule '(ipacertmapdata=X509:<I>{issuer_dn!nss_x500}<S>{subject_dn!nss_x500})'
# ipa certmaprule-mod smartcardrule --maprule '(ipacertmapdata=X509:<I>{issuer_dn!nss_x500}<S>{subject_dn!nss_x500})'
Copy to Clipboard Copied!
10.5.2. スマートカード証明書に関連付けられたユーザーの確認
スマートカードでの認証に問題がある場合は、正しいユーザーがスマートカード証明書に関連付けられていることを確認してください。
前提条件
- Identity Management(IdM) サーバーおよびクライアントを、スマートカードで使用するようにインストールおよび設定している。
- スマートカードリーダーを検出し、スマートカードの内容を表示できる。システムでのスマートカードアクセスのテスト を参照してください。
- スマートカード証明書を IdM ユーザーにマッピングした。スマートカードにおける認証を設定するための証明書マッピングルール を参照してください。
-
PEM 形式のスマートカードからの証明書のコピー (例:
cert.pem
) がある。
手順
ユーザーがスマートカード証明書に関連付けられていることを確認します。
ipa certmap-match cert.pem
# ipa certmap-match cert.pem -------------- 1 user matched -------------- Domain: IDM.EXAMPLE.COM User logins: idmuser1 ---------------------------- Number of entries returned 1 ----------------------------
Copy to Clipboard Copied! ユーザーまたはドメインが正しくない場合は、証明書がユーザーにどのようにマッピングされているかを確認してください。証明書がユーザーにどのようにマッピングされているかを確認する を参照してください。
ユーザーエントリーに証明書が含まれているかどうかを確認します。
ipa user-show idmuser1
# ipa user-show idmuser1 User login: idmuser1 [...] Certificate:MIIEejCCAuKgAwIBAgIBCzANBgkqhkiG9w0BAQsFADAzMREwDwYDVQQKDAhJUEEuVEVTVDEeMBwGA1UEAwwVQ2VydGlmaWNhdGUgQXV0aG9yaXR5MB4XD
Copy to Clipboard Copied! ユーザーエントリーに証明書が含まれていない場合は、base-64 でエンコードされた証明書をユーザーエントリーに追加します。
ヘッダーとフッターのある証明書を含む環境変数を作成し、1 行に連結します。これは、
ipa user-add-cert
コマンドで必要な形式です。export CERT=`openssl x509 -outform der -in idmuser1.crt | base64 -w0 -`
$ export CERT=`openssl x509 -outform der -in idmuser1.crt | base64 -w0 -`
Copy to Clipboard Copied! idmuser1.crt
ファイルの証明書は PEM 形式である必要があることに注意してください。ipa user-add-cert
コマンドを使用して、証明書をidmuser1
のプロファイルに追加します。ipa user-add-cert idmuser1 --certificate=$CERT
$ ipa user-add-cert idmuser1 --certificate=$CERT
Copy to Clipboard Copied! System Security Services Daemon (SSSD) キャッシュをクリアします。
sssctl cache-remove
# sssctl cache-remove SSSD must not be running. Stop SSSD now? (yes/no) [yes] yes Creating backup of local data… Removing cache files… SSSD needs to be running. Start SSSD now? (yes/no) [yes] yes
Copy to Clipboard Copied!
-
ipa certmap-match
を再度実行して、ユーザーがスマートカード証明書に関連付けられていることを確認します。