2.4. 使用 Ansible 为智能卡验证配置 IdM 客户端
按照以下流程,使用 ansible-freeipa
ipasmartcard_client
模块配置特定的身份管理(IdM)客户端,以允许 IdM 用户使用智能卡进行身份验证。运行这个流程为使用以下任一方法访问 IdM 的用户启用智能卡验证:
ssh
协议详情请查看 使用智能卡验证配置 SSH 访问。
- 控制台登录
- GNOME 显示管理器(GDM)
-
su
命令
对于向 IdM Web UI 进行身份验证,不需要此流程。向 IdM Web UI 进行身份验证涉及两个主机,它们都不必是 IdM 客户端:
- 其上运行浏览器的机器。机器可以在 IdM 域之外。
-
其上运行
httpd
的 IdM 服务器。
先决条件
- 您的 IdM 服务器已被配置为进行智能卡验证,如 使用 Ansible 为智能卡验证配置 IdM 服务器 中所述。
- 有对 IdM 服务器和 IdM 客户端的 root 访问权限。
- 您有根 CA 证书、IdM CA 证书以及所有中间 CA 证书。
您已配置了 Ansible 控制节点以满足以下要求:
- 您使用 Ansible 版本 2.14 或更高版本。
-
您已在 Ansible 控制器上安装了
ansible-freeipa
软件包。 - 示例假定在 ~/MyPlaybooks/ 目录中,您已创建了一个带有 IdM 服务器的完全限定域名(FQDN)的 Ansible 清单文件。
-
示例假定 secret.yml Ansible vault 存储了
ipaadmin_password
。
-
目标节点,也就是在其上执行
ansible-freeipa
模块的节点,是 IdM 域的一部分,作为 IdM 客户端、服务器或副本。
流程
如果您的 CA 证书存储在不同格式(如
DER
)的文件中,请将其转换为PEM
格式:# openssl x509 -in <filename>.der -inform DER -out <filename>.pem -outform PEM
IdM CA 证书采用
PEM
格式,位于/etc/ipa/ca.crt
文件中。(可选)使用
openssl x509
工具查看PEM
格式的文件的内容,以检查Issuer
和Subject
值是否正确:# openssl x509 -noout -text -in root-ca.pem | more
在 Ansible 控制节点上,导航到 ~/MyPlaybooks/ 目录:
$ cd ~/MyPlaybooks/
创建专用于 CA 证书的子目录:
$ mkdir SmartCard/
为方便起见,将所有必需的证书复制到 ~/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
在 Ansible 清单文件中指定以下内容:
- 要为智能卡验证配置的 IdM 客户端。
- IdM 管理员密码。
CA 证书的路径按以下顺序:
- 根 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
使用以下内容创建
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
- 保存该文件。
运行 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 示例