8.2. 使用 Ansible 为智能卡验证配置 IdM 服务器
您可以使用 Ansible 为证书是由 RHEL 身份管理(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.yml
playbook: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_server
Ansible 角色执行以下操作:- 它配置 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
[...]