证书映射
需要 ca 模块。客户端证书或智能卡如何匹配到用户:匹配规则与映射规则的语法、优先级、全局 Prompt for username 开关,以及用 Certificate Identity Mapping Match 页验证。
本页说明 Authentication 下的 Certificate mapping 页面组,需要 ca 模块。证书登录(智能卡、PKINIT、管理台的 Log in with certificate)时,sssd 持有一张证书,需要确定对应的用户。有三种途径:证书全文存在用户对象的证书字段里(精确匹配);用户的 ipacertmapdata 里有它的颁发者和主题;或者一条证书映射规则把证书里的字段翻译成 LDAP 查询。

规则

| 字段 | 含义 |
|---|---|
| Matching rule | 规则对哪些证书生效。<ISSUER>CN=Certificate Authority,O=LINUX.IPA.TEST 只匹配 IPA CA 签发的证书;<SUBJECT>.*,DC=ad,DC=example,DC=com 匹配 AD CA 签发的证书。留空表示所有证书 |
| Mapping rule | 命中后用什么查用户。占位符有 {subject_dn}、{issuer_dn}、{subject_rfc822_name}(邮箱 SAN)、{subject_principal}(UPN SAN)等;!nss_x500 等转换把 DN 调整为 LDAP 顺序 |
| Domain name | 到哪个域找用户。留空表示本域;填 AD 域名则到 AD 里找,用于 AD 用户的智能卡登录 |
| Priority | 数字小的先试。一条规则命中并找到用户即停止 |
| Enabled | 禁用的规则跳过 |
常用映射:
| 场景 | 映射规则 |
|---|---|
证书存在用户的 ipacertmapdata | (ipacertmapdata=X509:<I>{issuer_dn!nss_x500}<S>{subject_dn!nss_x500}) |
| 证书主题的 CN 是登录名 | (uid={subject_cn}) |
| 邮箱 SAN 匹配用户邮箱 | (mail={subject_rfc822_name}) |
| AD 智能卡,UPN 匹配 AD 用户 | (userPrincipalName={subject_principal}),Domain name 填 AD 域;或 (altSecurityIdentities=X509:<I>{issuer_dn!ad_x500}<S>{subject_dn!ad_x500}) |
一条规则的映射查询返回多个用户视为失败,登录被拒绝。
全局配置

Prompt for username 勾选后,证书登录时还要求用户输入登录名,映射结果必须与之一致。不勾选时完全由证书决定。多张证书对应同一人、或映射可能有歧义时勾选。
验证规则

Certificate Identity Mapping Match 页粘贴一张 PEM 证书,右侧解析出颁发者、主题、序列号、有效期、指纹,Match 按现有规则算出对应的用户列表。等价于 ipa certmap-match cert.pem。规则上线前先在这里验证。
边界
| 事项 | 说明 |
|---|---|
| 客户端生效 | 规则改动后执行 sss_cache -E。sssd 每次证书登录都从 IPA 获取规则,但用户查找结果有缓存 |
| AD 用户 | 匹配到 AD 用户需要 ad-trust 模块和已建立的信任 |
| 证书有效性 | 证书链和吊销由客户端 sssd 的 certificate_verification 决定,规则不管 |