Menu Close

7.5. 证书映射和匹配规则故障排除

如果您在使用智能卡验证时遇到问题,请检查您已将智能卡证书正确链接到用户。默认情况下,当用户条目包含完整证书作为 usercertificate 属性的一部分时,会关联一个证书。但是,如果您定义了证书映射规则,您可能已经更改了与用户关联的证书的方式。要排除证书映射和匹配规则的问题,请参阅以下部分:

注意

如果您通过 SSH 使用智能卡进行验证,则需要将完整证书添加到 Identity Management(IdM)的用户条目中。如果您不使用 SSH 验证智能卡,您可以使用 ipa user-add-certmapdata 命令添加证书映射数据。

7.5.1. 检查证书如何映射到用户

默认情况下,当用户条目包含完整证书作为 usercertificate 属性的一部分时,会关联一个证书。但是,如果您定义了证书映射规则,您可能已经更改了与用户关联的证书的方式。这个步骤描述了如何检查证书映射规则。

先决条件

步骤

  1. 验证当前为 IdM 配置的证书映射规则:

    # ipa certmaprule-find
    -------------------------------------------
    1 Certificate Identity Mapping Rule matched
    -------------------------------------------
      Rule name: smartcardrule
      Mapping rule: (ipacertmapdata=X509:<I>{issuer_dn!nss_x500}<S>{subject_dn!nss_x500})
      Matching rule: <ISSUER>CN=Certificate Authority,O=IDM.EXAMPLE.COM
      Enabled: TRUE
    ----------------------------
    Number of entries returned 1
    ----------------------------

    您可以看到定义的以下映射规则之一:

    • ipacertmapdata 表示使用 IdM 用户条目 certmapdata 属性。
    • altSecurityIdentities 指定使用 Active Directory 的用户条目名称映射属性。
    • userCertificate;binary= 表示使用 IdM 或 AD 中的整个证书。

    您可以定义许多匹配选项,但一些通常配置的选项如下:

    • <ISSUER>CN=[…​] 指定被检查的证书的 issuer 属性,以确保它与此匹配。
    • <SUBJECT>.*,DC=MY,DC=DOMAIN 表示是否已检查证书的主题。
  2. 通过在 IdM 服务器上的 /etc/sssd/sssd.conf 文件中添加 debug_level = 9 来启用系统安全服务守护进程(SSSD)日志:

    [domain/idm.example.com]
    ...
    debug_level = 9
  3. 重启 SSSD:

    # systemctl restart sssd
  4. 如果正确读取映射,您应该在 /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}))].
  5. 如果您的映射规则包含无效的语法,则日志文件中可以看到类似如下的条目:

    [be[idm.example.com]]] [sss_certmap_init] (0x0040): sss_certmap initialized.
    [be[idm.example.com]]] [ipa_certmap_parse_results] (0x4000): Trying to add rule [smartcardrule][-1][<ISSUER>CN=Certificate Authority,O=IDM.EXAMPLE.COM][(ipacertmapdata=X509:<I>{issuer_dn!x509}<S>{subject_dn})].
    [be[idm.example.com]]] [parse_template] (0x0040): Parse template invalid.
    [be[idm.example.com]]] [parse_ldap_mapping_rule] (0x0040): Failed to add template.
    [be[idm.example.com]]] [parse_mapping_rule] (0x0040): Failed to parse LDAP mapping rule.
    [be[idm.example.com]]] [ipa_certmap_parse_results] (0x0020): sss_certmap_add_rule failed for rule [smartcardrule], skipping. Please check for typos and if rule syntax is supported.
    [be[idm.example.com]]] [ipa_subdomains_certmap_done] (0x0040): Unable to parse certmap results [22]: Invalid argument
    [be[idm.example.com]]] [ipa_subdomains_refresh_certmap_done] (0x0020): Failed to read certificate mapping rules [22]: Invalid argument
  6. 检查您的映射规则语法。

    # ipa certmaprule-show smartcardrule
      Rule name: smartcardrule
      Mapping rule: (|(userCertificate;binary={cert!bin})(ipacertmapdata=X509:<I>{issuer_dn!nss_x500}<S>{subject_dn!nss_x500}))
      Matching rule: <ISSUER>CN=Certificate Authority,O=IDM.EXAMPLE.COM
      Domain name: ipa.test
      Enabled: TRUE
  7. 如果需要,修改您的证书映射规则:

    # ipa certmaprule-mod smartcardrule --maprule '(ipacertmapdata=X509:<I>{issuer_dn!nss_x500}<S>{subject_dn!nss_x500})'

其他资源

  • 请参阅 sss-certmap man page。