Red Hat Training

A Red Hat training course is available for RHEL 8

64.4. 使用 Ansible 为智能卡验证配置 IdM 客户端

按照以下流程,使用 ansible-freeipa ipasmartcard_client 模块配置特定的身份管理(IdM)客户端,以允许 IdM 用户使用智能卡进行身份验证。运行这个步骤为使用以下任一方法的 IdM 用户启用智能卡验证:

注意

对于向 IdM Web UI 进行身份验证,不需要此流程。向 IdM Web UI 进行身份验证涉及两个主机,它们都不必是 IdM 客户端:

  • 运行浏览器的机器。机器可以在 IdM 域之外。
  • 在其上运行 httpd 的 IdM 服务器。

先决条件

  • 为智能卡验证配置了您的 IdM 服务器,如使用 Ansible 配置 IdM 服务器进行智能卡验证 所述。
  • 有对 IdM 服务器和 IdM 客户端的 root 访问权限。
  • 您有 root CA 证书、IdM CA 证书以及所有中间 CA 证书。
  • 您已配置了 Ansible 控制节点以满足以下要求:

    • 您使用 Ansible 版本 2.14 或更高版本。
    • 您已在 Ansible 控制器上安装了 ansible-freeipa 软件包。
    • 示例假定在 ~/MyPlaybooks/ 目录中,您已创建了一个具有 IdM 服务器的完全限定域名(FQDN)的 Ansible 清单文件
    • 示例假定 secret.yml Ansible 库存储了 ipaadmin_password

流程

  1. 如果您的 CA 证书以不同格式(如 DER )的文件存储,请将其转换为 PEM 格式:

    # openssl x509 -in <filename>.der -inform DER -out <filename>.pem -outform PEM

    IdM CA 证书采用 PEM 格式,并位于 /etc/ipa/ca.crt 文件中。

  2. (可选)使用 openssl x509 工具查看 PEM 格式文件的内容,以检查 IssuerSubject的值是否正确:

    # openssl x509 -noout -text -in root-ca.pem | more
  3. 在 Ansible 控制节点上,导航到 ~/MyPlaybooks/ 目录:

    $ cd ~/MyPlaybooks/
  4. 创建专用于 CA 证书的子目录:

    $ mkdir SmartCard/
  5. 为方便起见,将所有必需的证书复制到 ~/MyPlaybooks/SmartCard/ 目录中,例如:

    # cp /tmp/root-ca.pem ~/MyPlaybooks/SmartCard/
    # cp /tmp/intermediate-ca.pem ~/MyPlaybooks/SmartCard/
    # cp /etc/ipa/ca.crt ~/MyPlaybooks/SmartCard/ipa-ca.crt
  6. 在 Ansible 清单文件中指定以下内容:

    • 要为智能卡验证配置的 IdM 客户端。
    • IdM 管理员密码。
    • CA 证书的路径按以下顺序:

      • root CA 证书文件
      • 中间 CA 证书文件
      • IdM CA 证书文件

    文件可以类似如下:

    [ipaclients]
    ipaclient1.example.com
    ipaclient2.example.com
    
    [ipaclients:vars]
    ipaadmin_password=SomeADMINpassword
    ipasmartcard_client_ca_certs=/home/<user_name>/MyPlaybooks/SmartCard/root-ca.pem,/home/<user_name>/MyPlaybooks/SmartCard/intermediate-ca.pem,/home/<user_name>/MyPlaybooks/SmartCard/ipa-ca.crt
  7. 使用以下内容创建 install-smartcard-clients.yml playbook:

    ---
    - name: Playbook to set up smart card authentication for an IdM client
      hosts: ipaclients
      become: true
    
      roles:
      - role: ipasmartcard_client
        state: present
  8. 保存该文件。
  9. 运行 Ansible playbook。指定 playbook 和清单文件:

    $ ansible-playbook --vault-password-file=password_file -v -i inventory install-smartcard-clients.yml

    ipasmartcard_client Ansible 角色执行以下操作:

    • 它配置智能卡守护进程。
    • 它设置系统范围的信任存储。
    • 它将系统安全服务守护进程(SSSD)配置为允许用户通过其用户名和密码或者智能卡进行身份验证。有关智能卡验证的 SSSD 配置集选项的详情,请参考 RHEL 中的智能卡验证选项

现在为智能卡验证配置了清单文件的 ipaclients 部分中列出的客户端。

注意

如果您使用 --mkhomedir 选项安装了 IdM 客户端,远程用户将能够登录到其主目录。否则,默认登录位置是目录结构 / 的根目录。

其它资源

  • /usr/share/doc/ansible-freeipa/playbooks/ 目录中使用 ipasmartcard_server 角色的 playbook 示例