Red Hat Training

A Red Hat training course is available for RHEL 8

第 51 章 为智能卡验证配置身份管理

使用基于智能卡的验证是使用密码进行验证的替代选择。您可以将用户凭证以私钥和证书的形式存储在智能卡上,并使用特殊的软件和硬件来访问它们。将智能卡放在读取器或 USB 端口中,并为智能卡提供 PIN 代码,而不是提供您的密码。

Identity Management(IdM)支持智能卡验证:

  • IdM 证书颁发机构发布的用户证书
  • 外部证书颁发机构发布的用户证书

这个用户用例演示了如何在 IdM 中为两种类型的证书设置智能卡验证。在用户故事中,smartcard_ca.pem CA 证书是包含可信外部证书颁发机构证书的文件。

用户会包括以下模块:

51.1. 为智能卡验证配置 IdM 服务器

如果要为 EXAMPLE.ORG 域的证书颁发机构发布证书的用户启用智能卡验证,其 LDAP 区分名称(DN)是 CN=Certificate Authority,DC=EXAMPLE,DC=EXAMPLE,DC=ORG,那么您需要获取颁发机构的证书,以便您可以使用配置 IdM 服务器的脚本来运行它。例如,您可以从认证机构发布的证书的网页下载证书。详情请查看配置浏览器以启用证书验证中的步骤 1 - 4a。

要为由 IdM 证书颁发机构签发证书的 IdM 用户启用智能卡验证,请在运行 IdM CA 的 IdM 服务器上从 /etc/ipa/ca.crt 文件中获取 CA 证书。

这部分论述了如何为智能卡验证配置 IdM 服务器。首先,获取 PEM 格式的 CA 证书的文件,然后运行内置 ipa-advise 脚本。最后,重新载入系统配置。

先决条件

  • 有到 IdM 服务器的 root 访问权限。
  • 您有 root CA 证书和任何子 CA 证书。

流程

  1. 创建要进行配置的目录:

    [root@server]# mkdir ~/SmartCard/
  2. 进入该目录:

    [root@server]# cd ~/SmartCard/
  3. 获取存储在 PEM 格式文件中的相关 CA 证书。如果您的 CA 证书以不同格式的文件存储,如 DER,将其转换为 PEM 格式。IdM 证书颁发机构证书位于 /etc/ipa/ca.crt 文件中。

    将 DER 文件转换为 PEM 文件:

    # openssl x509 -in <filename>.der -inform DER -out <filename>.pem -outform PEM
  4. 为方便起见,将证书复制到您要进行配置的目录中:

    [root@server SmartCard]# cp /etc/ipa/ca.crt ~/SmartCard/
    [root@server SmartCard]# cp /tmp/smartcard_ca.pem ~/SmartCard/
  5. 另外,如果您使用外部证书颁发机构的证书,请使用 openssl x509 实用程序查看 PEM 格式的文件内容,以检查 IssuerSubject 值是否正确:

    [root@server SmartCard]# openssl x509 -noout -text -in smartcard_ca.pem | more
  6. 使用管理员的权限生成带有内置 ipa-advise 工具的配置脚本:

    [root@server SmartCard]# kinit admin
    [root@server SmartCard]# sudo ipa-advise config-server-for-smart-card-auth > config-server-for-smart-card-auth.sh

    config-server-for-smart-card-auth.sh 脚本执行以下操作:

    • 它配置 IdM Apache HTTP 服务器。
    • 它在 KDC(Key Distribution Center)中启用 PKINIT(Public Key Cryptography for Initial Authentication in Kerberos)。
    • 它将 IdM Web UI 配置为接受智能卡授权请求。
  7. 执行脚本,将包含 root CA 和子 CA 证书的 PEM 文件添加为参数:

    [root@server SmartCard]# chmod +x config-server-for-smart-card-auth.sh
    [root@server SmartCard]# ./config-server-for-smart-card-auth.sh smartcard_ca.pem ca.crt
    Ticket cache:KEYRING:persistent:0:0
    Default principal: admin@IDM.EXAMPLE.COM
    [...]
    Systemwide CA database updated.
    The ipa-certupdate command was successful
    注意

    在任何子 CA 证书前,确保将 root CA 的证书添加为参数,并且 CA 或子 CA 证书还没有过期。

  8. 另外,如果发布用户证书的证书颁发机构不提供任何在线证书状态协议(OCSP)响应程序,您可能需要禁用 OCSP 检查 IdM Web UI 的身份验证:

    1. /etc/httpd/conf.d/ssl.conf 文件中将 SSLOCSPEnable 参数设置为 off

      SSLOCSPEnable off
    2. 重启 Apache 守护进程(httpd)使更改立即生效:

      [root@server SmartCard]# sudo systemctl restart httpd
    警告

    如果您只使用 IdM CA 发出的用户证书,不要禁用 OCSP 检查。OCSP 响应器是 IdM 的一部分。

    有关如何启用 OCSP 检查的说明,以及如果 IdM 服务器不包含发布用户证书侦听 OCSP 服务请求的位置信息,请参阅 Apache mod_ssl 配置选项 中的 SSLOCSPDefaultResponder 指令。

该服务器现在被配置为智能卡验证。

注意

要在整个拓扑中启用智能卡验证,请在每个 IdM 服务器中运行操作过程。