Menu Close
7.5. 证书映射和匹配规则故障排除
如果您在使用智能卡验证时遇到问题,请检查您已将智能卡证书正确链接到用户。默认情况下,当用户条目包含完整证书作为 usercertificate
属性的一部分时,会关联一个证书。但是,如果您定义了证书映射规则,您可能已经更改了与用户关联的证书的方式。要排除证书映射和匹配规则的问题,请参阅以下部分:
如果您通过 SSH 使用智能卡进行验证,则需要将完整证书添加到 Identity Management(IdM)的用户条目中。如果您不使用 SSH 验证智能卡,您可以使用 ipa user-add-certmapdata
命令添加证书映射数据。
7.5.1. 检查证书如何映射到用户
默认情况下,当用户条目包含完整证书作为 usercertificate
属性的一部分时,会关联一个证书。但是,如果您定义了证书映射规则,您可能已经更改了与用户关联的证书的方式。这个步骤描述了如何检查证书映射规则。
先决条件
- 已安装并配置了 Identity Management(IdM)服务器和客户端,用于智能卡。
- 您可以检测智能卡读取器并显示智能卡的内容。请参阅在系统上测试智能卡访问。
- 您已将智能卡证书映射到 IdM 用户。请参阅在智能卡 上配置身份验证的证书映射规则。
步骤
验证当前为 IdM 配置的证书映射规则:
# 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 ----------------------------
您可以看到定义的以下映射规则之一:
-
ipacertmapdata
表示使用 IdM 用户条目certmapdata
属性。 -
altSecurityIdentities
指定使用 Active Directory 的用户条目名称映射属性。 -
userCertificate;binary=
表示使用 IdM 或 AD 中的整个证书。
您可以定义许多匹配选项,但一些通常配置的选项如下:
-
<ISSUER>CN=[…]
指定被检查的证书的 issuer 属性,以确保它与此匹配。 -
<SUBJECT>.*,DC=MY,DC=DOMAIN
表示是否已检查证书的主题。
-
通过在 IdM 服务器上的
/etc/sssd/sssd.conf
文件中添加debug_level = 9
来启用系统安全服务守护进程(SSSD)日志:[domain/idm.example.com] ... debug_level = 9
重启 SSSD:
# systemctl restart sssd
如果正确读取映射,您应该在
/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]]] [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
检查您的映射规则语法。
# 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
如果需要,修改您的证书映射规则:
# ipa certmaprule-mod smartcardrule --maprule '(ipacertmapdata=X509:<I>{issuer_dn!nss_x500}<S>{subject_dn!nss_x500})'
其他资源
-
请参阅
sss-certmap
man page。