10.5. 证书映射和匹配规则故障排除
如果您在使用智能卡验证时遇到问题,请检查您已将智能卡证书正确链接到用户。默认情况下,当用户条目包含完整证书作为 usercertificate
属性的一部分时,会关联一个证书。但是,如果您定义了证书映射规则,您可能已经更改了与用户关联的证书的方式。
如果您通过 SSH 使用智能卡进行验证,则需要将完整证书添加到 Identity Management(IdM)的用户条目中。如果您不使用 SSH 验证智能卡,您可以使用 ipa user-add-certmapdata
命令添加证书映射数据。
10.5.1. 检查证书如何映射到用户 复制链接链接已复制到粘贴板!
默认情况下,当用户条目包含完整证书作为 usercertificate
属性的一部分时,会关联一个证书。但是,如果您定义了证书映射规则,您可能已经更改了与用户关联的证书的方式。按照以下流程检查您的证书映射规则。
先决条件
- 已安装并配置了 Identity Management(IdM)服务器和客户端,用于智能卡。
- 您可以检测智能卡读取器并显示智能卡的内容。请参阅在系统上测试智能卡访问。
- 您已将智能卡证书映射到 IdM 用户。请参阅在智能卡 上配置身份验证的证书映射规则。
步骤
验证当前为 IdM 配置的证书映射规则:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 您可以看到定义的以下映射规则之一:
-
ipacertmapdata
表示使用 IdM 用户条目certmapdata
属性。 -
altSecurityIdentities
指定使用 Active Directory 的用户条目名称映射属性。 -
userCertificate;binary=
表示使用 IdM 或 AD 中的整个证书。
您可以定义许多匹配选项,但一些通常配置的选项如下:
-
<ISSUER>CN=[…]
指定被检查的证书的 issuer 属性,以确保它与此匹配。 -
<SUBJECT>.*,DC=MY,DC=DOMAIN
表示是否已检查证书的主题。
-
通过在 IdM 服务器上的
/etc/sssd/sssd.conf
文件中添加debug_level = 9
来启用系统安全服务守护进程(SSSD)日志:[domain/idm.example.com] ... debug_level = 9
[domain/idm.example.com] ... debug_level = 9
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 重启 SSSD:
systemctl restart sssd
# systemctl restart sssd
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 如果正确读取映射,您应该在
/var/log/sssd/sssd_idm.example.com.log
文件中看到以下条目:[be[idm.example.com]] [sdap_setup_certmap] (0x4000): Trying to add rule [smartcardrule][-1][<ISSUER>CN=Certificate Authority,O=IDM.EXAMPLE.COM][(|(userCertificate;binary={cert!bin})(ipacertmapdata=X509:<I>{issuer_dn!nss_x500}<S>{subject_dn!nss_x500}))].
[be[idm.example.com]] [sdap_setup_certmap] (0x4000): Trying to add rule [smartcardrule][-1][<ISSUER>CN=Certificate Authority,O=IDM.EXAMPLE.COM][(|(userCertificate;binary={cert!bin})(ipacertmapdata=X509:<I>{issuer_dn!nss_x500}<S>{subject_dn!nss_x500}))].
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 如果您的映射规则包含无效的语法,则日志文件中可以看到类似如下的条目:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 检查您的映射规则语法。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 如果需要,修改您的证书映射规则:
ipa certmaprule-mod smartcardrule --maprule '(ipacertmapdata=X509:<I>{issuer_dn!nss_x500}<S>{subject_dn!nss_x500})'
# ipa certmaprule-mod smartcardrule --maprule '(ipacertmapdata=X509:<I>{issuer_dn!nss_x500}<S>{subject_dn!nss_x500})'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
10.5.2. 检查与智能卡证书关联的用户 复制链接链接已复制到粘贴板!
如果您在使用智能卡进行身份验证时遇到问题,请验证正确的用户是否与您的智能卡证书关联。
先决条件
- 已安装并配置了 Identity Management(IdM)服务器和客户端,用于智能卡。
- 您可以检测智能卡读取器并显示智能卡的内容。请参阅在系统上测试智能卡访问。
- 您已将智能卡证书映射到 IdM 用户。请参阅在智能卡 上配置身份验证的证书映射规则。
-
您有 PEM 格式的智能卡中的证书副本,例如
cert.pem
。
步骤
验证用户是否与您的智能卡证书关联:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 如果用户或域不正确,请检查您的证书如何映射到用户。请参阅检查如何将证书映射到用户。
检查用户条目是否包含证书:
ipa user-show idmuser1
# ipa user-show idmuser1 User login: idmuser1 [...] Certificate:MIIEejCCAuKgAwIBAgIBCzANBgkqhkiG9w0BAQsFADAzMREwDwYDVQQKDAhJUEEuVEVTVDEeMBwGA1UEAwwVQ2VydGlmaWNhdGUgQXV0aG9yaXR5MB4XD
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 如果您的用户条目不包含证书,请将您的 base-64 编码证书添加到用户条目中:
创建一个包含证书的环境变量,该变量移除了标头和页脚,并串联成一行,这是
ipa user-add-cert
命令期望的格式:export CERT=`openssl x509 -outform der -in idmuser1.crt | base64 -w0 -`
$ export CERT=`openssl x509 -outform der -in idmuser1.crt | base64 -w0 -`
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 请注意,
idmuser1.crt
文件中的证书必须采用 PEM 格式。使用
ipa user-add-cert
命令将证书添加到idmuser1
配置集中:ipa user-add-cert idmuser1 --certificate=$CERT
$ ipa user-add-cert idmuser1 --certificate=$CERT
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 清除系统安全服务守护进程(SSSD)缓存。
sssctl cache-remove
# sssctl cache-remove SSSD must not be running. Stop SSSD now? (yes/no) [yes] yes Creating backup of local data… Removing cache files… SSSD needs to be running. Start SSSD now? (yes/no) [yes] yes
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
-
再次运行
ipa certmap-match
来确认用户与您的智能卡证书关联。