7.2. 使用 Ansible 为智能卡验证配置 IdM 服务器
在此过程中,您可以使用 Ansible 为证书是由身份管理(IdM) CA 信任的 <EXAMPLE.ORG> 域的证书颁发机构(CA)发布的用户启用智能卡验证。
先决条件
-
您有到 IdM 服务器的
root访问权限。 -
您需要知道 IdM
admin密码。 您有 root CA 证书、IdM CA 证书和所有中间 CA 证书:
- 已直接为 <EXAMPLE.ORG> CA 签发证书的 root CA 的证书,或通过一个或多个子 CA 签发。您可以从认证机构发布证书的网页下载证书链。详情请参阅 配置浏览器中的第 4 步以启用证书身份验证。
-
IdM CA 证书。您可以从任何 IdM CA 服务器上的
/etc/ipa/ca.crt文件中获取 CA 证书。 - 在 <EXAMPLE.ORG> CA 和 IdM CA 之间中间所有 CA 的证书。
您已配置了 Ansible 控制节点以满足以下要求:
- 您使用 Ansible 版本 2.13 或更高版本。
-
您已安装
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
# openssl x509 -in <filename>.der -inform DER -out <filename>.pem -outform PEMCopy 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 | moreCopy 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.crtCopy to Clipboard Copied! Toggle word wrap Toggle overflow 在 Ansible 清单文件中,指定以下内容:
- 要为智能卡验证配置的 IdM 服务器。
- IdM 管理员密码。
CA 的证书路径按以下顺序排列:
- root 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.ymlCopy 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)响应程序,您可能需要禁用对 IdM Web UI 进行身份验证的 OCSP 检查:
以
root身份连接到 IdM 服务器:ssh root@ipaserver.idm.example.com
ssh root@ipaserver.idm.example.comCopy to Clipboard Copied! Toggle word wrap Toggle overflow 在
/etc/httpd/conf.d/ssl.conf文件中将SSLOCSPEnable参数设置为off:SSLOCSPEnable off
SSLOCSPEnable offCopy to Clipboard Copied! Toggle word wrap Toggle overflow 重启 Apache 守护进程(httpd)使更改立即生效:
systemctl restart httpd
# systemctl restart httpdCopy to Clipboard Copied! Toggle word wrap Toggle overflow
警告如果您只使用 IdM CA 发出的用户证书,不要禁用 OCSP 检查。OCSP 响应器是 IdM 的一部分。
有关如何启用 OCSP 检查的说明,以及如果 IdM 服务器不包含发布用户证书侦听 OCSP 服务请求的位置信息,请参阅 Apache mod_ssl 配置选项 中的
SSLOCSPDefaultResponder指令。
清单文件中列出的服务器现在被配置为智能卡验证。
要在整个拓扑中启用智能卡验证,请将 Ansible playbook 中的 hosts 变量设置为 ipacluster :
--- - name: Playbook to setup smartcard for IPA server and replicas hosts: ipacluster [...]
---
- name: Playbook to setup smartcard for IPA server and replicas
hosts: ipacluster
[...]