Red Hat Training

A Red Hat training course is available for Red Hat Enterprise Linux

23.2. 在身份管理中配置证书映射规则

23.2.1. 在智能卡中配置身份验证的证书映射规则

证书映射规则是允许用户在身份管理(IdM)管理员无法访问某些用户证书时,允许用户使用证书进行身份验证的便捷方式。缺少访问权限的原因通常是因为证书是由外部证书颁发机构颁发的。一个特殊用例由 IdM 域处于信任关系的 Active Directory(AD)证书系统发布的证书代表。
如果 IdM 环境较大且有大量使用智能卡的用户,使用证书映射规则就会比较方便。在这种情况下,添加完整证书可能会比较复杂。大多数情况下,主题和发行者都是可预测的,因此提前添加比完整证书更容易。作为系统管理员,您可以创建证书映射规则,并在将证书映射数据添加到特定用户之前将证书映射数据添加到用户条目。签发证书后,用户将能够使用该证书登录,即使完整证书没有上传到其条目中。
另外,由于证书必须定期续订,证书映射规则可降低管理开销。当用户的证书被更新时,管理员不必更新用户条目。例如,如果映射基于 SubjectIssuer 值,如果新证书的主题和签发者与旧证书相同,则映射仍适用。如果使用完整证书,则管理员必须将新证书上传到用户条目以替换旧证书。
设置证书映射:
  1. 管理员必须将证书映射数据(通常是签发者和主题)加载到用户帐户中。
  2. 管理员必须创建证书映射规则,以便用户成功登录到 IdM:
    • 其帐户包含证书映射数据条目
    • 哪个证书映射数据条目与证书的信息匹配
    有关组成映射规则的单个组件以及如何获取和使用它们的详情,请参阅 IdM 中的身份映射规则的组件,以及从证书中排除签发者以在匹配规则中使用的证书。

23.2.1.1. 使用 Active Directory 域进行信任的证书映射规则

本节概述了如果 IdM 部署与 Active Directory(AD)域存在信任关系时可能的不同证书映射用例。
证书映射规则是一个便捷的方法,可为具有可信 AD 证书系统发布的智能卡证书的用户启用对 IdM 资源的访问。根据 AD 配置,可能会出现以下情况:

23.2.1.2. IdM 中身份管理规则的组件

本节介绍了 IdM 中身份映射规则的组件以及如何配置它们。每个组件都有一个可覆盖的默认值。您可以在 web UI 或命令行中定义组件。在命令行中,身份映射规则是使用 ipa certmaprule-add 命令创建的。
映射规则
映射规则组件将证书与一个或多个用户帐户关联(或映射)。规则定义一个 LDAP 搜索过滤器,它将证书与预期用户帐户相关联。
不同证书颁发机构(CA)发布的证书可能有不同的属性,可以在不同的域中使用。因此,IdM 不会无条件地应用映射规则,而只应用到适当的证书。使用匹配规则定义适当的证书。
请注意,如果您将映射规则选项留空,则证书将在 userCertificate 属性中作为 DER 编码的二进制文件进行搜索。
使用 --maprule 选项,在命令行中定义映射规则。
匹配规则
域列表指定您希望 IdM 在处理身份映射规则时搜索用户的身份域。如果未指定 选项,IdM 仅在 IdM 客户端所属本地域中搜索用户。
使用 --domain 选项,在命令行中定义域。
优先级
当多个规则适用于证书时,优先级最高的规则优先。所有其他规则将被忽略。
  • 数字值越低,身份映射规则的优先级越高。例如,具有优先级 1 的规则的优先级高于优先级 2 的规则。
  • 如果规则没有定义优先级值,它具有最低的优先级。
使用 --priority 选项,在命令行中定义映射规则优先级。

例 23.1. 证书映射规则示例

要定义,使用命令行,一个名为 simple_rule 的证书映射规则,允许对 EXAMPLE.ORG 机构智能卡 CA 发布的证书进行身份验证,只要该证书上的 Subject 与 IdM 中用户帐户中的 certmapdata 条目匹配:
# ipa certmaprule-add simple_rule --matchrule '<ISSUER>CN=Smart Card CA,O=EXAMPLE.ORG' --maprule '(ipacertmapdata=X509:<I>{issuer_dn!nss_x500}<S>{subject_dn!nss_x500})'

23.2.1.3. 从匹配规则中的证书获取颁发者

这个步骤描述了如何从证书获取签发者信息,以便您可以将其复制并粘贴到证书映射规则的匹配规则中。要获得匹配规则所需的签发者格式,请使用 openssl x509 命令。

先决条件

  • 您有 .pem.crt 格式的用户证书。

步骤

  1. 从证书获取用户信息。使用 openssl 证书显示和签名工具:
    • 用于防止请求编码版本的输出的 -noout 选项
    • 输出签发者名称的 -issuer 选项
    • in 选项指定 要从中读取证书的输入文件名
    • 使用 RFC2253 值的 -nameopt 选项,首先显示最具体相对可分辨名称(RDN)的输出
    如果输入文件包含身份管理证书,命令的输出会显示使用机构 信息 定义了发行者:
    # openssl x509 -noout -issuer -in idm_user.crt -nameopt RFC2253
    issuer=CN=Certificate Authority,O=REALM.EXAMPLE.COM
    如果输入文件包含一个 Active Directory 证书,命令的输出会显示使用 域组件 信息定义了发行者:
    # # openssl x509 -noout -issuer -in ad_user.crt -nameopt RFC2253
    issuer=CN=AD-WIN2012R2-CA,DC=AD,DC=EXAMPLE,DC=COM
  2. (可选)要在命令行中基于匹配规则创建一个新的映射规则,该规则指定证书签发者必须是 ad.example.com 域的提取 AD-WIN2012R2-CA,证书上的主题必须与 IdM 中用户帐户中的 certmapdata 条目匹配:
    # ipa certmaprule-add simple_rule --matchrule '<ISSUER>CN=AD-WIN2012R2-CA,DC=AD,DC=EXAMPLE,DC=COM' --maprule '(ipacertmapdata=X509:<I>{issuer_dn!nss_x500}<S>{subject_dn!nss_x500})'

其它信息

有关 certmap 命令的详情,包括匹配规则和映射规则支持的格式的信息,以及优先级和域字段的说明,请参阅 sss-certmap(5) man page。

23.2.2. 为存储在 IdM 中的用户配置证书映射

这部分论述了当在 IdM 中存储证书身份验证的用户时,系统管理员在 IdM 中启用证书映射所需的步骤。

先决条件

  • 用户在 IdM 中有一个帐户。
  • 管理员具有要添加到用户条目的完整证书或证书映射数据。

23.2.2.1. 在 IdM 中添加证书映射规则

本节论述了如何设置证书映射规则,以便具有与映射规则中指定的条件以及证书映射数据条目中指定的证书的 IdM 用户可以进行身份验证到 IdM。
23.2.2.1.1. 在 IdM Web UI 中添加证书映射规则
  1. 以管理员身份登录 IdM Web UI。
  2. 导航到 AuthenticationCertificate Identity Mapping RulesCertificate Identity Mapping Rules
  3. 点击 Add

    图 23.1. 在 IdM Web UI 中添加新证书映射规则

    在 IdM Web UI 中添加新证书映射规则
  4. 输入规则名称。
  5. 输入映射规则。例如,要让 IdM 搜索提供给它们的任何证书中的 IssuerSubject 条目,并根据在提供的证书的两个条目中找到的信息进行验证或不进行验证,请输入:
    (ipacertmapdata=X509:<I>{issuer_dn!nss_x500}<S>{subject_dn!nss_x500})
  6. 输入匹配的规则。例如,只允许 EXAMPLE.ORG 机构的智能卡 CA 发布的证书来验证用户到 IdM,请输入:
    <ISSUER>CN=Smart Card CA,O=EXAMPLE.ORG

    图 23.2. 在 IdM Web UI 中输入证书映射规则的详情

    在 IdM Web UI 中输入证书映射规则的详情
  7. 单击对话框底部的 Add,以添加该规则并关闭该框。
  8. 系统安全服务守护进程(SSSD)定期重新读取证书映射规则。要强制立即载入新创建的规则,请重启 SSSD:
    # systemctl restart sssd
现在,您设置了证书映射规则,将它在智能卡证书中找到的映射规则中指定的数据类型与 IdM 用户条目中的证书映射数据进行比较。找到匹配项后,它将验证匹配的用户。
23.2.2.1.2. 使用命令行添加证书映射规则
  1. 获取管理员凭证:
    # kinit admin
  2. 输入映射规则,以及映射规则所基于的匹配规则。例如,要让 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
  3. 系统安全服务守护进程(SSSD)定期重新读取证书映射规则。要强制立即载入新创建的规则,请重启 SSSD:
    # systemctl restart sssd
现在,您设置了证书映射规则,将它在智能卡证书中找到的映射规则中指定的数据类型与 IdM 用户条目中的证书映射数据进行比较。找到匹配项后,它将验证匹配的用户。

23.2.2.2. 在 IdM 中添加证书映射数据到用户条目

这部分论述了如何输入证书映射数据到 IdM 用户条目,以便用户可以使用多个证书进行身份验证,只要它们都包含证书映射数据条目中指定的值。
23.2.2.2.1. 在 IdM Web UI 中添加证书映射数据到用户条目
  1. 以管理员身份登录 IdM Web UI。
  2. 导航到 UsersActive users,再单击用户条目。
  3. 找到 证书映射数据 选项,然后单击 Add
  4. 如果您有用户的证书,请由您处理:
    1. 在命令行界面中,使用 cat 工具或文本编辑器显示证书:
      # [root@server ~]# cat idm_user_certificate.pem
      -----BEGIN CERTIFICATE-----
      MIIFFTCCA/2gAwIBAgIBEjANBgkqhkiG9w0BAQsFADA6MRgwFgYDVQQKDA9JRE0u RVhBTVBMRS5DT00xHjAcBgNVBAMMFUNlcnRpZmljYXRlIEF1dGhvcml0eTAeFw0x ODA5MDIxODE1MzlaFw0yMDA5MDIxODE1MzlaMCwxGDAWBgNVBAoMD0lETS5FWEFN
      [...output truncated...]
    2. 复制证书。
    3. 在 IdM Web UI 中,单击 Certificate 旁边的 Add,并将证书粘贴到打开的窗口中。

      图 23.3. 添加用户证书映射数据:证书

      添加用户证书映射数据:证书
      或者,如果您还没有用户的证书,但知道证书的 IssuerSubject 信息,请检查 Issuer 和 subject 单选按钮,并在两个框中输入值。

      图 23.4. 添加用户证书映射数据:签发者和主题

      添加用户证书映射数据:签发者和主题
  5. 点击 Add
  6. 另外,如果您能够以 .pem 格式访问整个证书,请验证是否已链接用户和证书:
    1. 使用 sss_cache 工具使 SSSD 缓存中用户的记录无效,并强制重新载入用户信息:
      # sss_cache -u user_name
    2. 使用包含 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
      ----------------------------
    输出会确认您现在已向用户添加证书映射数据,且存在 第 23.2.2.1 节 “在 IdM 中添加证书映射规则” 中定义的对应映射规则。这意味着,您可以使用与定义的证书映射数据匹配的任何证书,以作为用户进行身份验证。
23.2.2.2.2. 使用命令行添加证书映射数据到用户条目
  1. 获取管理员凭证:
    # kinit admin
  2. 如果您有用户的证书,请使用 ipa user-add-cert 命令将证书添加到用户帐户中:
    # CERT=`cat idm_user_cert.pem | tail -n +2 | head -n -1 | tr -d '\r\n'\`
    # ipa user-add-certmapdata idm_user --certificate $CERT
    或者,如果您还没有用户的证书,但知道用户证书的 IssuerSubject 信息:
    # 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
  3. 另外,如果您能够以 .pem 格式访问整个证书,请验证是否已链接用户和证书:
    1. 使用 sss_cache 工具使 SSSD 缓存中用户的记录无效,并强制重新载入用户信息:
      # sss_cache -u user_name
    2. 使用包含 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
      ----------------------------

23.2.3. 为用户配置证书映射,Whose AD User Entry 包含 Whole Certificate

本节论述了在 IdM 部署中信任 Active Directory(AD)启用证书映射所需的步骤,用户存储在 AD 中,AD 中的用户条目包含整个证书。

先决条件

  • 用户在 IdM 中没有帐户。
  • 用户在 AD 中有一个包含证书的帐户。
  • IdM 管理员有权访问 IdM 证书映射规则可以基于的数据。

23.2.3.1. 为用户添加证书映射规则,而 Whose AD User Entry 包含使用 IdM Web UI 的 Whole Certificate

在 IdM Web UI 中添加证书映射规则:
  1. 以管理员身份登录 IdM Web UI。
  2. 导航到 AuthenticationCertificate Identity Mapping RulesCertificate Identity Mapping Rules
  3. 点击 Add

    图 23.5. 在 IdM Web UI 中添加新证书映射规则

    在 IdM Web UI 中添加新证书映射规则
  4. 输入规则名称。
  5. 输入映射规则。与 AD 中可用内容相比,有向 IdM 呈现的完整证书进行身份验证:
    (userCertificate;binary={cert!bin})
  6. 输入匹配的规则。例如,只允许 AD.EXAMPLE.COM 域的 AD-ROOT-CA 发布的证书进行身份验证:
    <ISSUER>CN=AD-ROOT-CA,DC=ad,DC=example,DC=com

    图 23.6. 为在 AD 中存储证书的用户映射证书映射规则

    为在 AD 中存储证书的用户映射证书映射规则
  7. 点击 Add
  8. 系统安全服务守护进程(SSSD)定期重新读取证书映射规则。要强制立即载入新创建的规则,请重启 SSSD:
    # systemctl restart sssd

23.2.3.2. 为用户 Whose AD User Entry 添加证书映射规则,使用命令行包含整个证书

使用命令行添加证书映射规则:
  1. 获取管理员凭证:
    # kinit admin
  2. 输入映射规则,以及映射规则所基于的匹配规则。要获得与 AD 中可用证书相比的用于身份验证的完整证书,只允许 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
  3. 系统安全服务守护进程(SSSD)定期重新读取证书映射规则。要强制立即载入新创建的规则,请重启 SSSD:
    # systemctl restart sssd

23.2.4. 如果将 AD 配置为将用户证书映射到用户帐户,则配置证书映射

本节论述了在 IdM 部署中信任 Active Directory(AD)启用证书映射所需的步骤,用户存储在 AD 中,AD 中的用户条目包含证书映射数据。

前提条件

  • 用户在 IdM 中没有帐户。
  • 用户在 AD 中有一个帐户,其中包含 altSecurityIdentities 属性,即 IdM certmapdata 属性的 AD 等效。
  • IdM 管理员有权访问 IdM 证书映射规则可以基于的数据。

23.2.4.1. 如果受信任的 AD 域被配置为映射用户证书,则使用 Web UI 添加证书映射规则

如果可信 AD 域被配置为映射用户证书,请添加证书映射规则:
  1. 以管理员身份登录 IdM Web UI。
  2. 导航到 AuthenticationCertificate Identity Mapping RulesCertificate Identity Mapping Rules
  3. 点击 Add

    图 23.7. 在 IdM Web UI 中添加新证书映射规则

    在 IdM Web UI 中添加新证书映射规则
  4. 输入规则名称。
  5. 输入映射规则。例如,要使 AD DC 搜索所呈现的任何证书中的 IssuerSubject 条目,并决定根据所出示证书的两个条目中提供的信息进行验证:
    (altSecurityIdentities=X509:<I>{issuer_dn!ad_x500}<S>{subject_dn!ad_x500})
  6. 输入匹配的规则。例如,要只允许 AD.EXAMPLE.COM 域的 AD-ROOT-CA 发布的证书来向 IdM 验证用户:
    <ISSUER>CN=AD-ROOT-CA,DC=ad,DC=example,DC=com
  7. 输入域:
    ad.example.com

    图 23.8. 如果为映射配置了 AD,则证书映射规则

    如果为映射配置了 AD,则证书映射规则
  8. 点击 Add
  9. 系统安全服务守护进程(SSSD)定期重新读取证书映射规则。要强制立即载入新创建的规则,请重启 SSSD:
    # systemctl restart sssd

23.2.4.2. 如果将受信任的 AD 域配置为映射用户证书,则使用命令行添加证书映射规则

使用命令行添加证书映射规则:
  1. 获取管理员凭证:
    # kinit admin
  2. 输入映射规则,以及映射规则所基于的匹配规则。例如,要让 AD 搜索所提供的任何证书中的 IssuerSubject 条目,并且只允许 AD.EXAMPLE.COM 域的 AD-ROOT-CA 发布的证书:
    # ipa certmaprule-add ad_configured_for_mapping_rule --matchrule '<ISSUER>CN=AD-ROOT-CA,DC=ad,DC=example,DC=com' --maprule '(altSecurityIdentities=X509:<I>{issuer_dn!ad_x500}<S>{subject_dn!ad_x500})' --domain=ad.example.com
    -------------------------------------------------------
    Added Certificate Identity Mapping Rule "ad_configured_for_mapping_rule"
    -------------------------------------------------------
      Rule name: ad_configured_for_mapping_rule
      Mapping rule: (altSecurityIdentities=X509:<I>{issuer_dn!ad_x500}<S>{subject_dn!ad_x500})
      Matching rule: <ISSUER>CN=AD-ROOT-CA,DC=ad,DC=example,DC=com
      Domain name: ad.example.com
      Enabled: TRUE
  3. 系统安全服务守护进程(SSSD)定期重新读取证书映射规则。要强制立即载入新创建的规则,请重启 SSSD:
    # systemctl restart sssd

23.2.4.3. 检查 AD 分片中的证书映射数据

altSecurityIdentities 属性是与 IdM 中的 certmapdata 用户属性等效的 Active Directory(AD)。当将可信 AD 域配置为将用户帐户映射到用户帐户时,IdM 系统管理员需要检查 AD 中的用户条目是否正确设置了 altSecurityIdentities 属性
要检查 AD 是否包含 AD 中存储的用户的正确信息,请使用 ldapsearch 命令。
例如,要检查 adserver. ad.example.com 服务器,使得 altSecurityIdentities 属性在 ad_user 的用户条目中设置,并且 matchrule 认为 ad_user 用来向 AD 进行身份验证的证书是由 ad.example.com 域的 AD-ROOT-CA 以及主题为 <S<> DC=com 签发的。 DC=example,DC=ad,CN=Users,CN=ad_user
$ ldapsearch -o ldif-wrap=no -LLL -h adserver.ad.example.com \
-p 389 -D cn=Administrator,cn=users,dc=ad,dc=example,dc=com \
-W -b cn=users,dc=ad,dc=example,dc=com "(cn=ad_user)" \
altSecurityIdentities
Enter LDAP Password:
dn: CN=ad_user,CN=Users,DC=ad,DC=example,DC=com
altSecurityIdentities: X509:<I>DC=com,DC=example,DC=ad,CN=AD-ROOT-CA<S>DC=com,DC=example,DC=ad,CN=Users,CN=ad_user

23.2.5. 如果 AD 用户输入不包含证书或映射数据,则配置证书映射

本节论述了在 IdM 部署中信任 Active Directory(AD)时启用证书映射所需的步骤,用户存储在 AD 中,AD 中的用户条目既不包含整个证书,也不包含整个证书或证书映射数据。

先决条件

  • 用户在 IdM 中没有帐户。
  • 用户在 AD 中有一个帐户,它不包含整个证书和 altSecurityIdentities 属性,即 IdM certmapdata 属性的 AD 等效。
  • IdM 管理员具有整个 AD 用户证书,用于在 IdM 中添加到 AD 用户的用户 ID 覆盖 中。

23.2.5.1. 如果 AD 用户条目不包含证书或映射数据,则使用 Web UI 添加证书映射规则

如果 AD 用户条目不包含证书或映射数据,则使用 web UI 添加证书映射规则:
  1. 以管理员身份登录 IdM Web UI。
  2. 导航到 AuthenticationCertificate Identity Mapping RulesCertificate Identity Mapping Rules
  3. 点击 Add

    图 23.9. 在 IdM Web UI 中添加新证书映射规则

    在 IdM Web UI 中添加新证书映射规则
  4. 输入规则名称。
  5. 输入映射规则。与 IdM 中 AD 用户条目的用户 ID 覆盖条目中存储的证书相比,要让 IdM 为 IdM 提供的整个证书进行身份验证:
    (userCertificate;binary={cert!bin})
  6. 输入匹配的规则。例如,只允许 AD.EXAMPLE.COM 域的 AD-ROOT-CA 发布的证书进行身份验证:
    <ISSUER>CN=AD-ROOT-CA,DC=ad,DC=example,DC=com
  7. 输入域名。例如,要在 ad.example.com 域中搜索用户:

    图 23.10. 无证书的用户的证书映射规则或在 AD 中映射数据存储

    无证书的用户的证书映射规则或在 AD 中映射数据存储
  8. 点击 Add
  9. 系统安全服务守护进程(SSSD)定期重新读取证书映射规则。要强制立即载入新创建的规则,请重启 SSSD:
    # systemctl restart sssd

23.2.5.2. 如果 AD 用户条目不包含证书或映射数据,则使用命令行添加证书映射规则

如果 AD 用户条目不包含证书或映射数据,请使用命令行添加证书映射规则:
  1. 获取管理员凭证:
    # kinit admin
  2. 输入映射规则,以及映射规则所基于的匹配规则。要获得与存储在 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
  3. 系统安全服务守护进程(SSSD)定期重新读取证书映射规则。要强制立即载入新创建的规则,请重启 SSSD:
    # systemctl restart sssd

23.2.5.3. 使用 Web UI 将证书添加到 AD 用户的 ID 覆盖中

如果 AD 中的用户条目不包含证书或映射数据,则使用 web UI 将证书添加到 AD 用户的 ID 覆盖中:
  1. 以管理员身份登录 IdM Web UI。
  2. 导航到 IdentityID ViewsDefault Trust View
  3. 点击 Add

    图 23.11. 在 IdM Web UI 中添加新用户 ID 覆盖

    在 IdM Web UI 中添加新用户 ID 覆盖
  4. User to override 字段中,输入以下格式的用户名: user_name@domain_name
  5. 将用户的证书复制并粘贴到 Certificate 字段中。

    图 23.12. 为 AD 用户配置用户 ID 覆盖

    为 AD 用户配置用户 ID 覆盖
  6. (可选)验证用户和证书是否已链接:
    1. 使用 sss_cache 工具使 SSSD 缓存中用户的记录无效,并强制重新载入用户信息:
      # sss_cache -u ad_user@ad.example.com
    2. 输入 ipa certmap-match 命令,以及包含 AD 用户证书的文件的名称:
      # 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_user@ad.example.com 进行身份验证。

23.2.5.4. 使用命令行在 AD 用户的 ID 覆盖中添加证书

如果 AD 中的用户条目不包含证书或映射数据,则使用命令行在 AD 用户的 ID 覆盖中添加证书:
  1. 获取管理员凭证:
    # kinit admin
  2. 使用 ipa idoverrideuser-add-cert 命令将用户的证书添加到用户帐户中:
    # CERT=`cat ad_user_cert.pem | tail -n +2 | head -n -1 | tr -d '\r\n'\`
    # ipa idoverrideuser-add-cert ad_user@ad.example.com --certificate $CERT
  3. (可选)验证用户和证书是否已链接:
    1. 使用 sss_cache 工具使 SSSD 缓存中用户的记录无效,并强制重新载入用户信息:
      # sss_cache -u ad_user@ad.example.com
    2. 输入 ipa certmap-match 命令,以及包含 AD 用户证书的文件的名称:
      # 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_user@ad.example.com 进行身份验证。

23.2.6. 将 Several Identity Mapping 规则合并到一个

要将多个身份映射规则组合成一个组合规则,请使用 | (或)字符在单个映射规则前前,并使用 () 方括号将它们分隔,例如:
$ ipa certmaprule-add ad_cert_for_ipa_and_ad_users \ --maprule='(|(ipacertmapdata=X509:<I>{issuer_dn!nss_x500}<S>{subject_dn!nss_x500})(altSecurityIdentities=X509:<I>{issuer_dn!ad_x500}<S>{subject_dn!ad_x500}))' \ --matchrule='<ISSUER>CN=AD-ROOT-CA,DC=ad,DC=example,DC=com' \ --domain=ad.example.com
在上例中,--maprule 选项中的过滤器定义包含以下条件:
--maprule 选项中的过滤器定义接受逻辑运算符 | (或),以便您可以指定多个条件。在这种情况下,规则会映射至少满足其中一个条件的所有用户帐户。
$ ipa certmaprule-add ipa_cert_for_ad_users \
  --maprule='(|(userCertificate;binary={cert!bin})(ipacertmapdata=X509:<I>{issuer_dn!nss_x500}<S>{subject_dn!nss_x500})(altSecurityIdentities=X509:<I>{issuer_dn!ad_x500}<S>{subject_dn!ad_x500}))' \
  --matchrule='<ISSUER>CN=Certificate Authority,O=REALM.EXAMPLE.COM' \
  --domain=idm.example.com --domain=ad.example.com
在上例中,--maprule 选项中的过滤器定义包含以下条件:
--maprule 选项中的过滤器定义接受逻辑运算符 |(或),以便您可以指定多个条件。在这种情况下,规则会映射至少满足其中一个条件的所有用户帐户。