23.5. 身份管理中的 PKINIT 智能卡身份验证
身份管理用户可以在加入身份管理的桌面客户端系统中使用智能卡进行身份验证,并自动获得 Kerberos 票据授权票据(TGT)。用户可以使用该票据从客户端进行进一步的单点登录(SSO)身份验证。
23.5.1. 为 PKINIT 身份验证准备身份管理客户端
作为身份管理管理员,请在您希望用户进行身份验证的客户端上执行以下步骤:
- 在服务器上,创建一个 shell 脚本来配置客户端。
- 使用 ipa-advise config-client-for-smart-card-auth 命令,并将其输出保存到文件中:
# ipa-advise config-client-for-smart-card-auth > client_smart_card_script.sh
- 打开 脚本文件,并检查其内容。
- 使用
chmod
实用程序为文件添加执行权限:# chmod +x client_smart_card_script.sh
- 将 脚本复制到客户端并运行它。使用签署智能卡证书的证书颁发机构(CA)添加 PEM 文件的路径:
# ./client_smart_card_script.sh CA_cert.pem
- 确保已安装 krb5-pkinit 软件包。
另外,如果外部证书颁发机构(CA)在智能卡上签名证书,请将智能卡 CA 添加为可信 CA:
- 在 Identity Management 服务器中安装 CA 证书:
# ipa-cacert-manage -n "SmartCard CA" -t CT,C,C install ca.pem # ipa-certupdate
在所有副本和客户端上也重复ipa-certupdate
。 - 重启 HTTP 服务器:
# systemctl restart httpd
在所有副本上重复 systemctl restart httpd。
注意
SSSD 可让管理员使用
certificate_verification
参数调整证书验证过程,例如,如果证书中定义的在线证书状态协议(OCSP)服务器无法从客户端访问。如需更多信息,请参阅 sssd.conf(5) man page。
23.5.2. 作为身份管理用户:在身份管理客户端上使用 PKINIT 进行身份验证
在身份管理客户端中使用
kinit
工具进行身份验证:
$ kinit -X X509_user_identity='PKCS11:opensc-pkcs11.so' idm_user
X 选项将
opensc-pkcs11.so
模块指定为预身份验证属性。详情请查看 kinit(1) man page。
23.5.3. 作为 Active Directory 用户:在身份管理客户端上使用 PKINIT 进行身份验证
先决条件
以管理员身份,配置环境以支持 Active Directory 用户的 PKINIT 身份验证:
- 配置 Active Directory 服务器,以信任签发智能卡证书的证书颁发机构(CA)。在 NTAuth 存储中导入 CA(请参阅 Microsoft 支持),并将 CA 添加为可信 CA。详情请参阅 Active Directory 文档。
- 将 Kerberos 客户端配置为信任发布智能卡证书的 CA:
- 在身份管理客户端上,打开
/etc/krb5.conf
文件。 - 在该文件中添加以下行:
[libdefaults] [... file truncated ...] pkinit_eku_checking = kpServerAuth pkinit_kdc_hostname = adserver.ad.domain.com
- 如果用户证书不包含证书撤销列表(CRL)分发点扩展,请配置 Active Directory 以忽略撤销错误:
- 将以下 REG 格式的内容保存到纯文本文件中,然后双击该文件将其导入到 Windows 注册表:
Windows Registry Editor Version 5.00 [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Kdc] "UseCachedCRLOnlyAndIgnoreRevocationUnknownErrors"=dword:00000001 [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\LSA\Kerberos\Parameters] "UseCachedCRLOnlyAndIgnoreRevocationUnknownErrors"=dword:00000001
或者,使用regedit.exe
应用程序手动设置值。 - 重启 Windows 系统以应用更改。
步骤
在身份管理客户端上使用
kinit
工具进行身份验证。使用用户名和域名指定 Active Directory 用户:
$ kinit -X X509_user_identity='PKCS11:opensc-pkcs11.so' ad_user@AD.DOMAIN.COM
X 选项将
opensc-pkcs11.so
模块指定为预身份验证属性。详情请查看 kinit(1) man page。