You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

无IDM情况下RHEL8基于Active Directory的智能卡配置故障求助

RHEL8智能卡AD认证故障:无法触发PIN输入,提示"Please (Re)Insert (Different) Smartcard"

问题背景

从使用UI/Coolkey智能卡+AD认证(支持移除自动锁定)的RHEL7环境,迁移至无网络连接安全区域的RHEL8环境,配置过程中遭遇无法解决的智能卡认证故障,红帽24小时单次答复支持无法提供有效帮助。

已完成配置操作

Windows Server 2019端

  • 打开mmc.exe
  • 依次点击File > Add/Remove Snap-in...,选择Certificates > "add>" > My User Account
  • 进入Trust Root Certificate Authorities,右键CA选择All Tasks > Export;在证书导出向导中选择DER Encoded Library x.509 (.CER),命名为ca_root.cer并保存
  • 通过scp将证书传输至RHEL8主机

RHEL8端

  1. 转换证书格式:
    openssl x509 -inform der -in ca_root.cer -out ca_root.pem
    
  2. 安装依赖包:
    dnf install -y samba-common samba-common-tools oddjob-mkhomedir sssd authselect nss-tools ccid pcsc-lite pcsc-lite-devel pcsc-tools opensc gnutls-utils
    
  3. 导入根证书:
    mkdir -p /etc/pki/ca-trust/source/anchors
    cp ca_root.pem /etc/pki/ca-trust/source/anchors/
    sudo update-ca-trust
    sudo certutil -A -i /etc/pki/ca-trust/source/anchors/ca_root.pem -n CA_ROOT -t CT,C,C -d /etc/pki/nssdb
    
  4. 启动oddjobd服务:
    systemctl enable oddjobd.service
    systemctl start oddjobd.service
    
  5. 配置SSSD:
    • 创建并设置权限:
      touch /etc/sssd/sssd.conf
      chmod 600 /etc/sssd/sssd.conf
      chown root:root /etc/sssd/sssd.conf
      
    • /etc/sssd/sssd.conf内容:
      [sssd]
      config_file_version = 2
      domains = mydomain.local
      services = nss, pam, pac
      
      [domain/MYDOMAIN.LOCAL]
      id_provider = ad
      auth_provider = ad
      chpass_provider = ad
      access_provider = ad
      cache_credentials = true
      
      [pam]
      pam_cert_auth = True
      
    • 启动SSSD:
      systemctl enable sssd.service
      systemctl start sssd.service
      
  6. 配置krb5:
    • /etc/krb5.conf内容:
      # To opt out of the system crypto-policies configuration of krb5, remove the
      # symlink at /etc/krb5.conf.d/crypto-policies which will not be recreated.
      includedir /etc/krb5.conf.d/
      
      [logging]
          default = FILE:/var/log/krb5libs.log
          kdc = FILE:/var/log/krb5kdc.log
          admin_server = FILE:/var/log/kadmind.log
      
      [libdefaults]
          dns_lookup_realm = false
          ticket_lifetime = 24h
          renew_lifetime = 7d
          forwardable = true
          rdns = false
          pkinit_anchors = /etc/pki/tls/certs/ca-bundle.crt
          spake_preauth_groups = edwards25519
          default_realm = MYDOMAIN.LOCAL
          default_ccache_name = KEYRING:persistent:%{uid}
      
  7. 加入AD域:
    realm join -U myadminuser MYDOMAIN.LOCAL
    
  8. 启用authselect智能卡配置:
    authselect select sssd  with-smartcard  with-smartcard-required with-smartcard-lock-on-removal --force
    

故障现象

  • 通过pcsc_scan、pkcs11_listcerts、pkcs11_inspects命令可确认Dell KB813t、智能卡及卡上证书均被正常识别
  • 该智能卡可在RHEL7及Windows 10主机上通过PIN正常登录
  • RHEL8登录界面仅显示Please (Re)Insert (Different) Smartcard,无PIN输入提示,无法完成认证
  • /var/log/secure及/var/log/messages日志仅记录相同提示及unable to authenticate信息
  • 移除authselect配置后,可通过用户名密码正常登录

排查及解决方案建议

1. 完善SSSD智能卡相关配置

在/etc/sssd/sssd.conf中补充以下配置:

  • 在[domain/MYDOMAIN.LOCAL]段添加:
    ad_use_pkinit = True
    
  • 在[pam]段添加PKCS11模块路径:
    pam_pkcs11_module_path = /usr/lib64/pkcs11/opensc-pkcs11.so
    

修改后重启SSSD服务:

systemctl restart sssd

2. 验证PKINIT配置有效性

修改/etc/krb5.conf中的pkinit_anchors,直接指定导出的根证书路径:

pkinit_anchors = FILE:/etc/pki/ca-trust/source/anchors/ca_root.pem

测试PKINIT票据获取:

kinit -X509_identity=PKCS11:<智能卡ID> <用户名>@MYDOMAIN.LOCAL

若命令触发PIN输入并成功获取票据,说明PKINIT层面无问题,故障出在PAM认证流程。

3. 检查PAM配置细节

查看authselect生成的PAM配置文件(/etc/pam.d/system-auth、/etc/pam.d/password-auth),确认包含pam_pkcs11.so的配置行,可添加debug参数以获取详细日志:

auth        sufficient    pam_pkcs11.so debug

重启系统后查看/var/log/secure,分析认证失败的具体环节。

4. 验证智能卡证书的UPN映射

使用以下命令检查证书的Subject Alternative Name字段,确保包含用户的UPN(userPrincipalName):

openssl x509 -in <卡导出的证书文件> -noout -text

RHEL8对证书与AD用户的绑定要求更严格,UPN不匹配会导致认证失败。

5. 配置pam_pkcs11映射规则

编辑/etc/pam_pkcs11/pam_pkcs11.conf,确保映射规则正确关联证书与AD用户:

map = msUPN:userPrincipalName;

启用debug日志:

debug = true;

重启系统后查看/var/log/messages中的pam_pkcs11详细日志,定位映射或认证失败原因。

内容的提问来源于stack exchange,提问作者Steven C.

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.12 04:17:33