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 域的一部分。

流程

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

    # openssl x509 -in <filename>.der -inform DER -out <filename>.pem -outform PEM
    Copy to Clipboard Toggle word wrap

    IdM 证书颁发机构证书采用 PEM 格式,位于 /etc/ipa/ca.crt 文件中。

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

    # openssl x509 -noout -text -in root-ca.pem | more
    Copy to Clipboard Toggle word wrap
  3. 进入您的 ~/MyPlaybooks/ 目录:

    $ cd ~/MyPlaybooks/
    Copy to Clipboard Toggle word wrap
  4. 创建专用于 CA 证书的子目录:

    $ mkdir SmartCard/
    Copy to Clipboard Toggle word wrap
  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
    Copy to Clipboard Toggle word wrap
  6. 在 Ansible 清单文件中指定以下内容:

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

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

    文件类似如下:

    [ipaserver]
    ipaserver.idm.example.com
    
    [ipareplicas]
    ipareplica1.idm.example.com
    ipareplica2.idm.example.com
    
    [ipacluster:children]
    ipaserver
    ipareplicas
    
    [ipacluster:vars]
    ipaadmin_password= "{{ ipaadmin_password }}"
    ipasmartcard_server_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
    Copy to Clipboard Toggle word wrap
  7. 使用以下内容创建一个 install-smartcard-server.yml playbook:

    ---
    - name: Playbook to set up smart card authentication for an IdM server
      hosts: ipaserver
      become: true
    
      roles:
      - role: ipasmartcard_server
        state: present
    Copy to Clipboard Toggle word wrap
  8. 保存该文件。
  9. 运行 Ansible playbook。指定 playbook 文件、存储保护 secret.yml 文件的密码,以及清单文件:

    $ ansible-playbook --vault-password-file=password_file -v -i inventory install-smartcard-server.yml
    Copy to Clipboard Toggle word wrap

    ipasmartcard_server Ansible 角色执行以下操作:

    • 它配置 IdM Apache HTTP 服务器。
    • 它在 KDC(Key Distribution Center)中启用 PKINIT(Public Key Cryptography for Initial Authentication in Kerberos)。
    • 它将 IdM Web UI 配置为接受智能卡授权请求。
  10. 可选:如果发布用户证书的证书颁发机构不提供任何在线证书状态协议(OCSP)响应程序,则您可能需要禁用 OCSP 检查,以对 IdM Web UI 进行身份验证:

    1. root 用户身份连接到 IdM 服务器:

      ssh root@ipaserver.idm.example.com
      Copy to Clipboard Toggle word wrap
    2. /etc/httpd/conf.d/ssl.conf 文件中将 SSLOCSPEnable 参数设为 off

      SSLOCSPEnable off
      Copy to Clipboard Toggle word wrap
    3. 重启 Apache 守护进程(httpd)使更改立即生效:

      # systemctl restart httpd
      Copy to Clipboard Toggle word wrap
    警告

    如果您只使用 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
[...]
Copy to Clipboard Toggle word wrap
返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2025 Red Hat