8.2. 使用 Ansible 为智能卡验证配置 IdM 服务器
				您可以使用 Ansible 为其证书是由身份管理(IdM) CA 信任的 <EXAMPLE.ORG> 域的证书颁发机构(CA)发布的用户启用智能卡验证。要做到这一点,您必须获取以下证书,以便在运行具有 ipasmartcard_server ansible-freeipa 角色脚本的 Ansible playbook 时使用它们:
			
- 为 <EXAMPLE.ORG> CA 直接发布或者通过一个或多个其子 CA 发布证书的根 CA 的证书。您可以从颁发机构发布证书的网页下载证书链。详情请参阅 配置浏览器以启用证书验证 中的步骤 4。
- 
						IdM CA 证书。您可以从任何 IdM CA 服务器上的 /etc/ipa/ca.crt文件获取 CA 证书。
- 介于<EXAMPLE.ORG> CA 和 IdM CA 之间的所有 CA 的证书。
先决条件
- 
						您有到 IdM 服务器的 root访问权限。
- 
						您需要知道 IdM admin密码。
- 您有根 CA 证书、IdM CA 证书以及所有中间 CA 证书。
- 您已配置了 Ansible 控制节点以满足以下要求: - 您在使用 Ansible 版本 2.15 或更高版本。
- 
								您已安装了 freeipa.ansible_freeipa集合。
- 示例假定在 ~/MyPlaybooks/ 目录中,您已创建了一个具有 IdM 服务器的完全限定域名(FQDN)的 Ansible 清单文件。
- 
								示例假定 secret.yml Ansible vault 存储了您的 ipaadmin_password,并且您可以访问存储了保护 secret.yml 文件的密码的文件。
 
- 
						目标节点(也就是在其上执行 freeipa.ansible_freeipa模块的节点)作为 IdM 客户端、服务器或副本,是 IdM 域的一部分。
流程
- 如果您的 CA 证书存储在不同格式(如 - DER)的文件中,请将其转换为- PEM格式:- openssl x509 -in <filename>.der -inform DER -out <filename>.pem -outform PEM - # openssl x509 -in <filename>.der -inform DER -out <filename>.pem -outform PEM- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - IdM 证书颁发机构证书采用 - PEM格式,位于- /etc/ipa/ca.crt文件中。
- 可选:使用 - openssl x509工具查看- PEM格式的文件内容,以检查- Issuer和- Subject值是否正确:- openssl x509 -noout -text -in root-ca.pem | more - # openssl x509 -noout -text -in root-ca.pem | more- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 进入您的 ~/MyPlaybooks/ 目录: - cd ~/MyPlaybooks/ - $ cd ~/MyPlaybooks/- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 创建专用于 CA 证书的子目录: - mkdir SmartCard/ - $ mkdir SmartCard/- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 为方便起见,将所有必需的证书复制到 ~/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 - # cp /tmp/root-ca.pem ~/MyPlaybooks/SmartCard/ # cp /tmp/intermediate-ca.pem ~/MyPlaybooks/SmartCard/ # cp /etc/ipa/ca.crt ~/MyPlaybooks/SmartCard/ipa-ca.crt- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 在 Ansible 清单文件中指定以下内容: - 要为智能卡验证配置的 IdM 服务器。
- IdM 管理员密码。
- CA 证书的路径按以下顺序: - 根 CA 证书文件
- 中间 CA 证书文件
- IdM CA 证书文件
 
 - 文件类似如下: - Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 使用以下内容创建一个 - install-smartcard-server.ymlplaybook:- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 保存该文件。
- 运行 Ansible playbook。指定 playbook 文件、存储保护 secret.yml 文件的密码,以及清单文件: - ansible-playbook --vault-password-file=password_file -v -i inventory install-smartcard-server.yml - $ ansible-playbook --vault-password-file=password_file -v -i inventory install-smartcard-server.yml- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - ipasmartcard_serverAnsible 角色执行以下操作:- 它配置 IdM Apache HTTP 服务器。
- 它在 KDC(Key Distribution Center)中启用 PKINIT(Public Key Cryptography for Initial Authentication in Kerberos)。
- 它将 IdM Web UI 配置为接受智能卡授权请求。
 
- 可选:如果发布用户证书的证书颁发机构不提供任何在线证书状态协议(OCSP)响应程序,则您可能需要禁用 OCSP 检查,以对 IdM Web UI 进行身份验证: - 以 - root用户身份连接到 IdM 服务器:- ssh root@ipaserver.idm.example.com - ssh root@ipaserver.idm.example.com- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 在 - /etc/httpd/conf.d/ssl.conf文件中将- SSLOCSPEnable参数设为- off:- SSLOCSPEnable off - SSLOCSPEnable off- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 重启 Apache 守护进程(httpd)使更改立即生效: - systemctl restart httpd - # systemctl restart httpd- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
 警告- 如果您只使用 IdM CA 发出的用户证书,不要禁用 OCSP 检查。OCSP 响应器是 IdM 的一部分。 - 有关如何保持 OCSP 检查处于启用状态,同时防止 IdM 服务器拒绝用户证书(如果 IdM 服务器不包含有关颁发用户证书的 CA 侦听 OCSP 服务请求的位置的信息)的说明,请参阅 Apache mod_ssl 配置选项 中的 - SSLOCSPDefaultResponder指令。- 清单文件中列出的服务器现在已被配置为进行智能卡验证。 注意- 要在整个拓扑中启用智能卡验证,请将 Ansible playbook 中的 - hosts变量设为- ipacluster:- --- - name: Playbook to set up smartcard for IPA server and replicas hosts: ipacluster [...] - --- - name: Playbook to set up smartcard for IPA server and replicas hosts: ipacluster [...]- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow