10.8. 如果 AD 用户条目不包含证书或映射数据,配置证书映射
这个用例描述了在 IdM 部署中使用 Active Directory(AD)启用证书映射所需的步骤,用户存储在 AD 中,并且 AD 中的用户条目没有包含整个证书也没有证书映射数据。
先决条件
- 用户在 IdM 中没有帐户。
-
用户在 AD 中包含一个帐户,其中没有包含整个证书也没有包括
altSecurityIdentities
属性,AD 相当于 IdMcertmapdata
属性。 IdM 管理员已完成了以下任务之一:
-
将整个 AD 用户证书添加到 IdM 中的 AD
用户 ID 覆盖
中。 - 创建一个映射到证书中备用字段的证书映射规则,如 Subject Alternative Name 或用户的 SID。
-
将整个 AD 用户证书添加到 IdM 中的 AD
10.8.1. 在 IdM Web UI 中添加证书映射规则
- 以管理员身份登录 IdM Web UI。
-
进入到
Authentication
Certificate Identity Mapping Rules
Certificate Identity Mapping Rules
。 点
Add
。图 10.9. 在 IdM web UI 中添加新证书映射规则
- 输入规则名称。
输入映射规则。与存储在 IdM 中的 AD 用户条目中的证书相比,会出现 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
域中搜索用户:图 10.10. 用户没有证书或映射存储在 AD 中的数据的证书映射规则
-
点
Add
。 系统安全服务守护进程(SSSD)会定期重新读取证书映射规则。要强制新创建的规则立即载入,在 CLI 中重启 SSSD:
# systemctl restart sssd
10.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
10.8.3. 在 IdM Web UI 中添加证书到 AD 用户的 ID 覆盖中
-
进入
Identity
ID Views
Default Trust View
。 点
Add
。图 10.11. 在 IdM Web UI 中添加新用户 ID 覆盖
-
在
User to override
字段中,输入ad_user@ad.example.com
。 将
ad_user
的证书复制并粘贴到Certificate
字段中。图 10.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
进行身份验证。
其他资源
10.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
进行身份验证。
其他资源