68.8. 如果 AD 用户条目不包含证书或映射数据,则配置证书映射
如果 IdM 部署与 Active Directory(AD)信任时,此用户故事描述了在 IdM 中启用证书映射所需的步骤,此用户存储在 AD 中,AD 中的用户条目既包含整个证书,也不包含证书映射数据。
先决条件
- 用户在 IdM 中没有帐户。
-
用户在 AD 中有一个帐户,它不包含整个证书和
altSecurityIdentities 属性
,即 IdMcertmapdata
属性的 AD 等效。 IdM 管理员已完成了以下任务之一:
-
将整个 AD 用户证书添加到 IdM 中的 AD 用户的
用户 ID 覆盖
中。 - 创建一个映射到证书中备用字段的证书映射规则,如 Subject Alternative Name 或用户的 SID。
-
将整个 AD 用户证书添加到 IdM 中的 AD 用户的
68.8.1. 在 IdM Web UI 中添加证书映射规则
- 以管理员身份登录 IdM Web UI。
-
导航到
Authentication
Certificate Identity Mapping Rules
Certificate Identity Mapping Rules
。 点
Add
。图 68.9. 在 IdM Web UI 中添加一个新的证书映射规则
- 输入规则名称。
输入映射规则。与存储在 IdM 中的 AD 用户条目的用户 ID 覆盖条目中的证书相比,为 IdM 提供整个证书进行身份验证:
(userCertificate;binary={cert!bin})
注意因为证书还包含作为 SAN 或具有最新更新的用户主体名称,所以证书的 SID 扩展中的用户的 SID 也可以使用这些字段将证书映射到用户。例如,如果使用用户的 SID,请将此映射规则替换为
LDAPU1: (objectsid={sid})
。有关证书映射的更多信息,请参阅sss-certmap
手册页。输入匹配的规则。例如,要只允许
AD.EXAMPLE.COM
域的AD-ROOT-CA
发布的证书进行身份验证:<ISSUER>CN=AD-ROOT-CA,DC=ad,DC=example,DC=com
输入域名。例如,要在
ad.example.com
域中搜索用户:图 68.10. 没有证书或映射数据的用户的证书映射规则
-
点
Add
。 系统安全服务守护进程(SSSD)定期重新读取证书映射规则。要强制立即载入新创建的规则,在 CLI 中重启 SSSD:
# systemctl restart sssd
68.8.2. 在 IdM CLI 中添加证书映射规则
获取管理员凭证:
# kinit admin
输入映射规则以及映射规则所基于的匹配规则。要让整个证书与存储在 IdM 中的 AD 用户条目的用户 ID 覆盖条目中的证书相比,只允许
AD.EXAMPLE.COM
域的AD-ROOT-CA
发布的证书来进行验证:# ipa certmaprule-add
simpleADrule
--matchrule '<ISSUER>CN=AD-ROOT-CA,DC=ad,DC=example,DC=com' --maprule '(userCertificate;binary={cert!bin})' --domain ad.example.com ------------------------------------------------------- Added Certificate Identity Mapping Rule "simpleADrule" ------------------------------------------------------- Rule name: simpleADrule Mapping rule: (userCertificate;binary={cert!bin}) Matching rule: <ISSUER>CN=AD-ROOT-CA,DC=ad,DC=example,DC=com Domain name: ad.example.com Enabled: TRUE注意因为证书还包含作为 SAN 或具有最新更新的用户主体名称,所以证书的 SID 扩展中的用户的 SID 也可以使用这些字段将证书映射到用户。例如,如果使用用户的 SID,请将此映射规则替换为
LDAPU1: (objectsid={sid})
。有关证书映射的更多信息,请参阅sss-certmap
手册页。系统安全服务守护进程(SSSD)定期重新读取证书映射规则。要强制立即载入新创建的规则,重启 SSSD:
# systemctl restart sssd
68.8.3. 在 IdM Web UI 中添加证书到 AD 用户的 ID 覆盖中
-
导航到
Identity
ID Views
Default Trust View
。 点
Add
。图 68.11. 在 IdM Web UI 中添加一个新的用户 ID 覆盖
-
在
User to override
字段中,输入ad_user@ad.example.com
。 将
ad_user
的证书复制并粘贴到Certificate
字段中。图 68.12. 为 AD 用户配置用户 ID 覆盖
-
点
Add
。
验证步骤
验证用户和证书是否已链接:
使用
sss_cache
程序在 SSSD 缓存中使ad_user@ad.example.com
记录无效,并强制重新载入ad_user@ad.example.com
信息:# sss_cache -u ad_user@ad.example.com
使用包含 AD 用户证书的文件名称运行
ipa certmap-match
命令:# ipa certmap-match ad_user_cert.pem -------------- 1 user matched -------------- Domain: AD.EXAMPLE.COM User logins: ad_user@ad.example.com ---------------------------- Number of entries returned 1 ----------------------------
输出确认了您已将证书映射数据添加到 ad_user@ad.example.com
,并且 如果 AD 用户条目不包含证书或映射数据 中定义的相应的映射规则存在。这意味着,您可以使用与定义的证书映射数据匹配的证书作为 ad_user@ad.example.com
进行身份验证。
其它资源
68.8.4. 在 IdM CLI 中在 AD 用户的 ID 覆盖中添加证书
获取管理员凭证:
# kinit admin
将证书 blob 保存在名为
CERT
的新变量中:# CERT=$(openssl x509 -in /path/to/certificate -outform der|base64 -w0)
使用
ipa idoverrideuser-add-cert
命令将ad_user@ad.example.com
的证书添加到用户帐户中:# ipa idoverrideuser-add-cert ad_user@ad.example.com --certificate $CERT
验证步骤
验证用户和证书是否已链接:
使用
sss_cache
程序在 SSSD 缓存中使ad_user@ad.example.com
记录无效,并强制重新载入ad_user@ad.example.com
信息:# sss_cache -u ad_user@ad.example.com
使用包含 AD 用户证书的文件名称运行
ipa certmap-match
命令:# ipa certmap-match ad_user_cert.pem -------------- 1 user matched -------------- Domain: AD.EXAMPLE.COM User logins: ad_user@ad.example.com ---------------------------- Number of entries returned 1 ----------------------------
输出确认了您已将证书映射数据添加到 ad_user@ad.example.com
,并且 如果 AD 用户条目不包含证书或映射数据 中定义的相应的映射规则存在。这意味着,您可以使用与定义的证书映射数据匹配的证书作为 ad_user@ad.example.com
进行身份验证。
其它资源