Red Hat Training

A Red Hat training course is available for RHEL 8

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

如果为其配置的证书身份验证存储在 IdM 中的用户在 IdM 中启用证书映射,系统管理员必须完成以下任务:

  • 设置证书映射规则,以便具有与映射规则及其证书映射数据条目中指定的条件匹配的证书的 IdM 用户可以向 IdM 进行身份验证。
  • 向 IdM 用户条目输入证书映射数据,以便用户可以使用多个证书进行身份验证,只要它们包含证书映射数据条目中指定的值。

先决条件

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

66.4.1. 在 IdM Web UI 中添加证书映射规则

  1. 以管理员身份登录 IdM Web UI。
  2. 导航到 AuthenticationCertificate Identity Mapping RulesCertificate Identity Mapping Rules
  3. Add

    图 66.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

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

    "添加证书身份映射规则"弹出窗口的截图并填写以下字段:规则名称(必需)- 映射规则 - 匹配规则。Priority 字段为空,域名标签旁边还有一个 Add 按钮。
  7. 单击对话框底部的 Add,以添加该规则并关闭该框。
  8. 系统安全服务守护进程(SSSD)定期重新读取证书映射规则。要强制立即载入新创建的规则,重启 SSSD:

    # systemctl restart sssd

现在,您设置了证书映射规则,可将在智能卡证书中找到的映射规则中指定的数据类型与 IdM 用户条目中的证书映射数据进行比较。找到匹配项后,它将对匹配的用户进行身份验证。

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

  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 用户条目中的证书映射数据进行比较。找到匹配项后,它将对匹配的用户进行身份验证。

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

  1. 以管理员身份登录 IdM Web UI。
  2. 导航到 UsersActive usersidm_user
  3. 查找 证书映射数据 选项并单击 Add
  4. 选择以下选项之一:

    • 如果您有 idm_user 证书:

      1. 在命令行界面中,使用 cat 工具或文本编辑器显示证书:

        [root@server ~]# cat idm_user_certificate.pem
        -----BEGIN CERTIFICATE-----
        MIIFFTCCA/2gAwIBAgIBEjANBgkqhkiG9w0BAQsFADA6MRgwFgYDVQQKDA9JRE0u
        RVhBTVBMRS5DT00xHjAcBgNVBAMMFUNlcnRpZmljYXRlIEF1dGhvcml0eTAeFw0x
        ODA5MDIxODE1MzlaFw0yMDA5MDIxODE1MzlaMCwxGDAWBgNVBAoMD0lETS5FWEFN
        [...output truncated...]
      2. 复制证书。
      3. 在 IdM Web UI 中,单击 Certificate 旁边的 Add,并将证书粘贴到打开的窗口中。

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

        页面截图显示用户"demouser"的设置,其中包含左侧的 Identity Settings 列,以及作业标题 - First name - Last name - Full name - Display name 等条目。"帐户设置"列位于右侧,包含条目(如用户登录 - 密码 - UID - GID)。系统突出显示"证书"条目的"添加"按钮。
        • 如果您没有 idm_user 证书,但知道证书的 IssuerSubject,请检查 Issuer and subject 单选按钮,并在两个框中分别输入值。

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

        "添加证书映射数据"弹出窗口的屏幕截图有两个重要按钮选项:证书映射数据"证书映射数据"和"Issuer 和 subject."已选中,并且填写了它的两个字段(颁发程序和主题)。
  5. Add

验证步骤

如果您可以访问 .pem 格式的整个证书,请验证是否用户和证书已链接:

  1. 使用 sss_cache 程序在 SSSD 缓存中使 idm_user 记录无效,并强制重新载入 idm_user 信息:

    # sss_cache -u idm_user
  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
    ----------------------------

    输出确认您现在已将证书映射数据添加到 idm_user,并且存在对应的映射规则。这意味着,您可以使用与定义的证书映射数据匹配的任何证书,以 idm_user 进行身份验证。

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

  1. 获取管理员凭证:

    # kinit admin
  2. 选择以下选项之一:

    • 如果您有 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 证书,但知道用户证书的 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

验证步骤

如果您可以访问 .pem 格式的整个证书,请验证是否用户和证书已链接:

  1. 使用 sss_cache 程序在 SSSD 缓存中使 idm_user 记录无效,并强制重新载入 idm_user 信息:

    # sss_cache -u idm_user
  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
    ----------------------------

    输出确认您现在已将证书映射数据添加到 idm_user,并且存在对应的映射规则。这意味着,您可以使用与定义的证书映射数据匹配的任何证书,以 idm_user 进行身份验证。