跳到主要内容

证书映射

需要 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 决定,规则不管

本页内容