10.4. 为存储在 IdM 中的用户配置证书映射
如果其配置的证书身份验证存储在 IdM 中的用户在 IdM 中启用了证书映射,则系统管理员必须完成以下任务:
- 设置一个证书映射规则,以便具有与映射规则及其证书映射数据条目中指定的条件匹配的证书的 IdM 用户可以向 IdM 进行身份验证。
- 将证书映射数据输入到 IdM 用户条目中,以便用户可以使用多个证书进行身份验证,只要它们都包含证书映射数据条目中指定的值。
先决条件
- 用户在 IdM 中有一个帐户。
- 管理员具有要添加到用户条目的整个证书或证书映射数据。
10.4.1. 在 IdM Web UI 中添加证书映射规则
- 以管理员身份登录到 IdM Web UI。
-
进入到
Authentication
Certificate Identity Mapping Rules
Certificate Identity Mapping Rules
。 点
Add
。图 10.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
图 10.2. 在 IdM Web UI 中输入证书映射规则的详情
-
点对话框底部的
Add
,添加规则并关闭该框。 系统安全服务守护进程(SSSD)会定期重新读取证书映射规则。要强制立即载入新创建的规则,重启 SSSD:
# systemctl restart sssd
现在,您设置了一个证书映射规则,它将把在智能卡证书中找到的映射规则中指定的数据类型与您的 IdM 用户条目中的证书映射数据进行比较。找到匹配项后,它会验证匹配的用户。
10.4.2. 在 IdM CLI 中添加证书映射规则
获取管理员凭证:
# kinit admin
输入映射规则以及映射规则所基于的匹配规则。例如,要让 IdM 搜索任何提供的证书中的
Issuer
和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 用户条目中的证书映射数据进行比较。找到匹配项后,它会验证匹配的用户。
10.4.3. 在 IdM web UI 中的用户条目中添加证书映射数据
- 以管理员身份登录 IdM Web UI。
-
进入
Users
Active users
idm_user
。 -
找到
Certificate mapping data
选项并点Add
。 选择以下选项之一:
如果您有
idm_user
证书:在命令行中,使用
cat
实用程序或文本编辑器显示证书:[root@server ~]# cat idm_user_certificate.pem -----BEGIN CERTIFICATE----- MIIFFTCCA/2gAwIBAgIBEjANBgkqhkiG9w0BAQsFADA6MRgwFgYDVQQKDA9JRE0u RVhBTVBMRS5DT00xHjAcBgNVBAMMFUNlcnRpZmljYXRlIEF1dGhvcml0eTAeFw0x ODA5MDIxODE1MzlaFw0yMDA5MDIxODE1MzlaMCwxGDAWBgNVBAoMD0lETS5FWEFN [...output truncated...]
- 复制证书。
在 IdM Web UI 中,点
证书
旁边的Add
,并将证书粘贴到打开的窗口中。图 10.3. 添加用户的证书映射数据:证书
-
如果您没有可供使用的
idm_user
证书,但知道证书的Issuer
和Subject
,请检查Issuer 和 subject
单选按钮,并在两个框中输入值。
图 10.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
进行身份验证。
10.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
进行身份验证。