68.4. 为存储在 IdM 中的用户配置证书映射
如果为其配置的证书身份验证存储在 IdM 中的用户在 IdM 中启用证书映射,系统管理员必须完成以下任务:
- 设置证书映射规则,以便具有与映射规则及其证书映射数据条目中指定的条件匹配的证书的 IdM 用户可以向 IdM 进行身份验证。
- 向 IdM 用户条目输入证书映射数据,以便用户可以使用多个证书进行身份验证,只要它们包含证书映射数据条目中指定的值。
先决条件
- 用户在 IdM 中有一个帐户。
- 管理员拥有要添加到用户条目的整个证书或证书映射数据。
68.4.1. 在 IdM Web UI 中添加证书映射规则
- 以管理员身份登录 IdM Web UI。
-
导航到
Authentication
Certificate Identity Mapping Rules
Certificate Identity Mapping Rules
。 点
Add
。图 68.1. 在 IdM Web UI 中添加一个新的证书映射规则
- 输入规则名称。
输入映射规则。例如,要让 IdM 搜索提供给它们的任何证书中的
Issuer
和Subject
条目,并根据所显示证书的两个条目中提供的信息做出验证决定:(ipacertmapdata=X509:<I>{issuer_dn!nss_x500}<S>{subject_dn!nss_x500})
输入匹配的规则。例如,只允许
EXAMPLE.ORG
机构智能卡 CA
发布的证书来验证用户到 IdM:<ISSUER>CN=Smart Card CA,O=EXAMPLE.ORG
图 68.2. 在 IdM Web UI 中输入证书映射规则的详情
-
单击对话框底部的
Add
,以添加该规则并关闭该框。 系统安全服务守护进程(SSSD)定期重新读取证书映射规则。要强制立即载入新创建的规则,重启 SSSD:
# systemctl restart sssd
现在,您设置了证书映射规则,可将在智能卡证书中找到的映射规则中指定的数据类型与 IdM 用户条目中的证书映射数据进行比较。找到匹配项后,它将对匹配的用户进行身份验证。
68.4.2. 在 IdM CLI 中添加证书映射规则
获取管理员凭证:
# kinit admin
输入映射规则以及映射规则所基于的匹配规则。例如,要让 IdM 搜索所呈现的任何证书中的
发行者和
Subject
条目,并基于所显示证书的两个条目中找到的信息进行身份验证,仅识别由EXAMPLE.ORG
机构的智能卡 CA
发布的证书:# ipa certmaprule-add
rule_name
--matchrule '<ISSUER>CN=Smart Card CA,O=EXAMPLE.ORG' --maprule '(ipacertmapdata=X509:<I>{issuer_dn!nss_x500}<S>{subject_dn!nss_x500})' ------------------------------------------------------- Added Certificate Identity Mapping Rule "rule_name" ------------------------------------------------------- Rule name: rule_name Mapping rule: (ipacertmapdata=X509:<I>{issuer_dn!nss_x500}<S>{subject_dn!nss_x500}) Matching rule: <ISSUER>CN=Smart Card CA,O=EXAMPLE.ORG Enabled: TRUE系统安全服务守护进程(SSSD)定期重新读取证书映射规则。要强制立即载入新创建的规则,重启 SSSD:
# systemctl restart sssd
现在,您设置了证书映射规则,可将在智能卡证书中找到的映射规则中指定的数据类型与 IdM 用户条目中的证书映射数据进行比较。找到匹配项后,它将对匹配的用户进行身份验证。
68.4.3. 在 IdM Web UI 中添加证书映射数据到用户条目
- 以管理员身份登录 IdM Web UI。
-
导航到
Users
Active users
idm_user
。 -
查找
证书映射数据
选项并单击Add
。 选择以下选项之一:
如果您有
idm_user
证书:在命令行界面中,使用
cat
工具或文本编辑器显示证书:[root@server ~]# cat idm_user_certificate.pem -----BEGIN CERTIFICATE----- MIIFFTCCA/2gAwIBAgIBEjANBgkqhkiG9w0BAQsFADA6MRgwFgYDVQQKDA9JRE0u RVhBTVBMRS5DT00xHjAcBgNVBAMMFUNlcnRpZmljYXRlIEF1dGhvcml0eTAeFw0x ODA5MDIxODE1MzlaFw0yMDA5MDIxODE1MzlaMCwxGDAWBgNVBAoMD0lETS5FWEFN [...output truncated...]
- 复制证书。
在 IdM Web UI 中,单击
Certificate
旁边的Add
,并将证书粘贴到打开的窗口中。图 68.3. 添加用户证书映射数据:证书
-
如果您没有
idm_user
证书,但知道证书的Issuer
和Subject
,请检查Issuer and subject
单选按钮,并在两个框中分别输入值。
图 68.4. 添加用户证书映射数据:签发者和主题
-
如果您没有
-
点
Add
。
验证步骤
如果您可以访问 .pem
格式的整个证书,请验证是否用户和证书已链接:
使用
sss_cache
程序在 SSSD 缓存中使idm_user
记录无效,并强制重新载入idm_user
信息:# sss_cache -u idm_user
使用包含 IdM 用户证书的文件名称运行
ipa certmap-match
命令:# ipa certmap-match idm_user_cert.pem -------------- 1 user matched -------------- Domain: IDM.EXAMPLE.COM User logins: idm_user ---------------------------- Number of entries returned 1 ----------------------------
输出确认您现在已将证书映射数据添加到
idm_user
,并且存在对应的映射规则。这意味着,您可以使用与定义的证书映射数据匹配的任何证书,以idm_user
进行身份验证。
68.4.4. 在 IdM CLI 中添加证书映射数据到用户条目
获取管理员凭证:
# kinit admin
选择以下选项之一:
-
如果您有
idm_user
证书,请使用ipa user-add-cert
命令将证书添加到用户帐户中:
# CERT=$(openssl x509 -in idm_user_cert.pem -outform der|base64 -w0) # ipa user-add-certmapdata idm_user --certificate $CERT
如果您没有
idm_user
证书,但知道用户证书的Issuer
和Subject
:# ipa user-add-certmapdata idm_user --subject "O=EXAMPLE.ORG,CN=test" --issuer "CN=Smart Card CA,O=EXAMPLE.ORG" -------------------------------------------- Added certificate mappings to user "idm_user" -------------------------------------------- User login: idm_user Certificate mapping data: X509:<I>O=EXAMPLE.ORG,CN=Smart Card CA<S>CN=test,O=EXAMPLE.ORG
-
如果您有
验证步骤
如果您可以访问 .pem
格式的整个证书,请验证是否用户和证书已链接:
使用
sss_cache
程序在 SSSD 缓存中使idm_user
记录无效,并强制重新载入idm_user
信息:# sss_cache -u idm_user
使用包含 IdM 用户证书的文件名称运行
ipa certmap-match
命令:# ipa certmap-match idm_user_cert.pem -------------- 1 user matched -------------- Domain: IDM.EXAMPLE.COM User logins: idm_user ---------------------------- Number of entries returned 1 ----------------------------
输出确认您现在已将证书映射数据添加到
idm_user
,并且存在对应的映射规则。这意味着,您可以使用与定义的证书映射数据匹配的任何证书,以idm_user
进行身份验证。