Kerberos PKINIT - 未找到匹配的条目 preauth (pkinit) 验证失败:证书不匹配

如何解决Kerberos PKINIT - 未找到匹配的条目 preauth (pkinit) 验证失败:证书不匹配

我已经安装了一个包括 Kerberos 的 FreeIPA 主服务器。此外,我有一台注册在 FreeIPA 中的客户端服务器,用于测试 Kerberos 的 PKINIT 功能。所有服务器都运行在 CentOS7 上。 当在 list_principals 中使用 kadmin 作为 testuser@REALMNAME 时,FreeIPA 中存在一个 testuser,并且该用户也列在一个且唯一的现有领域中。

getprinc testuser 也给出 Attributes: REQUIRES_PRE_AUTH

我严格按照文档创建了 kdc 和客户端证书:https://web.mit.edu/kerberos/www/krb5-latest/doc/admin/pkinit.html。它们已由我自己的 CA 签名,其证书也存在于客户端和主服务器上。

master上的[realm]配置如下:

[realms]
 TEST.INTERN = {
  kdc = XXX:88
  master_kdc = XXX:88
  admin_server = XXX:749
  default_domain = test.intern
  pkinit_anchors = FILE:/etc/krb/ca.pem
  pkinit_identity = FILE:/etc/krb/kdc.pem,/etc/krb/kdckey.pem
  allow_pkinit = yes
  module = pkinit:/usr/lib64/krb5/plugins/preauth/pkinit.so
}

XXX 是主服务器 FQDN。此外,客户端配置如下:

[realms]
  TEST.INTERN = {
    kdc = XXX:88
    master_kdc = XXX:88
    admin_server = XXX:749
    kpasswd_server = XXX:464
    default_domain = test.intern
    pkinit_anchors = FILE:/etc/krb/ca.pem
    pkinit_identities = FILE:/etc/krb/client.pem,/etc/krb/clientkey.pem
  }

AFAIK 我应该能够在客户端上执行 kinit testuser 以获取 Kerberos 票证而无需输入密码。

不幸的是,执行 env KRB5_TRACE=/dev/stdout kinit -V testuser 会产生:

[2988] 1614772826.172614: Getting initial credentials for testuser@TEST.INTERN
[2988] 1614772826.172616: Sending unauthenticated request
[2988] 1614772826.172617: Sending request (170 bytes) to TEST.INTERN
[2988] 1614772826.172618: Resolving hostname XXX
[2988] 1614772826.172619: Initiating TCP connection to stream XXX_IP:88
[2988] 1614772826.172620: Sending TCP request to stream XXX_IP:88
[2988] 1614772826.172621: Received answer (298 bytes) from stream XXX_IP:88
[2988] 1614772826.172622: Terminating TCP connection to stream XXX_IP:88
[2988] 1614772826.172623: Response was from master KDC
[2988] 1614772826.172624: Received error from KDC: -1765328359/Additional pre-authentication required
[2988] 1614772826.172627: Preauthenticating using KDC method data
[2988] 1614772826.172628: Processing preauth types: PA-PK-AS-REQ (16),PA-PK-AS-REP_OLD (15),PA-PK-AS-REQ_OLD (14),PA-FX-FAST (136),PA-ETYPE-INFO2 (19),PA-PKINIT-KX (147),PA-ENC-TIMESTAMP (2),PA-FX-C
OKIE (133)
[2988] 1614772826.172629: Selected etype info: etype aes256-cts,salt ""@0.X)+A92ZBJ*5T",params ""
[2988] 1614772826.172630: Received cookie: MIT
[2988] 1614772826.172631: Preauth module pkinit (147) (info) returned: 0/Success
[2988] 1614772826.172632: PKINIT loading CA certs and CRLs from FILE
[2988] 1614772826.172633: PKINIT client computed kdc-req-body checksum 9/80ADD1F631A328C4895D0B822F96608C303E6743
[2988] 1614772826.172635: PKINIT client making DH request
[2988] 1614772826.172636: Preauth module pkinit (16) (real) returned: 0/Success
[2988] 1614772826.172637: Produced preauth for next request: PA-FX-COOKIE (133),PA-PK-AS-REQ (16)
[2988] 1614772826.172638: Sending request (3475 bytes) to TEST.INTERN
[2988] 1614772826.172639: Resolving hostname XXX
[2988] 1614772826.172640: Initiating TCP connection to stream XXX_IP:88
[2988] 1614772826.172641: Sending TCP request to stream XXX_IP:88
[2988] 1614772826.172642: Received answer (167 bytes) from stream XXX_IP:88
[2988] 1614772826.172643: Terminating TCP connection to stream XXX_IP:88
[2988] 1614772826.172644: Response was from master KDC
[2988] 1614772826.172645: Received error from KDC: -1765328318/Certificate mismatch
kinit: Certificate mismatch while getting initial credentials

主服务器确认了这一点。 /var/log/krb5kdc.log 产生:

Mar 03 13:01:10 XXX krb5kdc[80746](info): Doing certauth authorize for [testuser@TEST.INTERN]
Mar 03 13:01:10 XXX krb5kdc[80746](info): Got cert filter [(userCertificate;binary=...
Mar 03 13:01:10 XXX krb5kdc[80746](info): No matching entry found
Mar 03 13:01:10 XXX krb5kdc[80746](info): preauth (pkinit) verify failure: Certificate mismatch

此时,我真的不知道,为什么会出现这种故障。证书是按照上面链接的文档严格创建的。 在检查带有 openssl asn1parse -in certificate.pem -strparse OFFSET 的证书时,使用相应的偏移量,我得到了 SubjectAltName,othername 部分:

openssl asn1parse -dump -in ../client/client.pem -strparse 815
    0:d=0  hl=2 l=  48 cons: SEQUENCE
    2:d=1  hl=2 l=  46 cons: cont [ 0 ]
    4:d=2  hl=2 l=   6 prim: OBJECT            :1.3.6.1.5.2.2
   12:d=2  hl=2 l=  36 cons: cont [ 0 ]
   14:d=3  hl=2 l=  34 cons: SEQUENCE
   16:d=4  hl=2 l=  13 cons: cont [ 0 ]
   18:d=5  hl=2 l=  11 prim: GENERALSTRING
      0000 - 54 45 53 54 2e 49 4e 54-45 52 4e                  TEST.INTERN
   31:d=4  hl=2 l=  17 cons: cont [ 1 ]
   33:d=5  hl=2 l=  15 cons: SEQUENCE
   35:d=6  hl=2 l=   3 cons: cont [ 0 ]
   37:d=7  hl=2 l=   1 prim: INTEGER           :01
   40:d=6  hl=2 l=   8 cons: cont [ 1 ]
   42:d=7  hl=2 l=   6 cons: SEQUENCE
   44:d=8  hl=2 l=   4 prim: GENERALSTRING
      0000 - 74 65 73 74 75 73 65 72                                       testuser

用于客户端证书和

openssl asn1parse -dump -in kdc.pem -strparse 832
    0:d=0  hl=2 l=  63 cons: SEQUENCE
    2:d=1  hl=2 l=  61 cons: cont [ 0 ]
    4:d=2  hl=2 l=   6 prim: OBJECT            :1.3.6.1.5.2.2
   12:d=2  hl=2 l=  51 cons: cont [ 0 ]
   14:d=3  hl=2 l=  49 cons: SEQUENCE
   16:d=4  hl=2 l=  13 cons: cont [ 0 ]
   18:d=5  hl=2 l=  11 prim: GENERALSTRING
      0000 - 54 45 53 54 2e 49 4e 54-45 52 4e                  TEST.INTERN
   31:d=4  hl=2 l=  32 cons: cont [ 1 ]
   33:d=5  hl=2 l=  30 cons: SEQUENCE
   35:d=6  hl=2 l=   3 cons: cont [ 0 ]
   37:d=7  hl=2 l=   1 prim: INTEGER           :02
   40:d=6  hl=2 l=  23 cons: cont [ 1 ]
   42:d=7  hl=2 l=  21 cons: SEQUENCE
   44:d=8  hl=2 l=   6 prim: GENERALSTRING
      0000 - 6b 72 62 74 67 74                                 krbtgt
   52:d=8  hl=2 l=  11 prim: GENERALSTRING
      0000 - 54 45 53 54 2e 49 4e 54-45 52 4e                  TEST.INTERN

用于 kdc 证书

目前我很不明白为什么这不起作用。

PS:我已经把真正的主服务器的 FQDN 换成了 XXX,它的 IP 换成了 XXX_IP。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


使用本地python环境可以成功执行 import pandas as pd import matplotlib.pyplot as plt # 设置字体 plt.rcParams['font.sans-serif'] = ['SimHei'] # 能正确显示负号 p
错误1:Request method ‘DELETE‘ not supported 错误还原:controller层有一个接口,访问该接口时报错:Request method ‘DELETE‘ not supported 错误原因:没有接收到前端传入的参数,修改为如下 参考 错误2:cannot r
错误1:启动docker镜像时报错:Error response from daemon: driver failed programming external connectivity on endpoint quirky_allen 解决方法:重启docker -> systemctl r
错误1:private field ‘xxx‘ is never assigned 按Altʾnter快捷键,选择第2项 参考:https://blog.csdn.net/shi_hong_fei_hei/article/details/88814070 错误2:启动时报错,不能找到主启动类 #
报错如下,通过源不能下载,最后警告pip需升级版本 Requirement already satisfied: pip in c:\users\ychen\appdata\local\programs\python\python310\lib\site-packages (22.0.4) Coll
错误1:maven打包报错 错误还原:使用maven打包项目时报错如下 [ERROR] Failed to execute goal org.apache.maven.plugins:maven-resources-plugin:3.2.0:resources (default-resources)
错误1:服务调用时报错 服务消费者模块assess通过openFeign调用服务提供者模块hires 如下为服务提供者模块hires的控制层接口 @RestController @RequestMapping("/hires") public class FeignControl
错误1:运行项目后报如下错误 解决方案 报错2:Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.8.1:compile (default-compile) on project sb 解决方案:在pom.
参考 错误原因 过滤器或拦截器在生效时,redisTemplate还没有注入 解决方案:在注入容器时就生效 @Component //项目运行时就注入Spring容器 public class RedisBean { @Resource private RedisTemplate<String
使用vite构建项目报错 C:\Users\ychen\work>npm init @vitejs/app @vitejs/create-app is deprecated, use npm init vite instead C:\Users\ychen\AppData\Local\npm-
参考1 参考2 解决方案 # 点击安装源 协议选择 http:// 路径填写 mirrors.aliyun.com/centos/8.3.2011/BaseOS/x86_64/os URL类型 软件库URL 其他路径 # 版本 7 mirrors.aliyun.com/centos/7/os/x86
报错1 [root@slave1 data_mocker]# kafka-console-consumer.sh --bootstrap-server slave1:9092 --topic topic_db [2023-12-19 18:31:12,770] WARN [Consumer clie
错误1 # 重写数据 hive (edu)> insert overwrite table dwd_trade_cart_add_inc > select data.id, > data.user_id, > data.course_id, > date_format(
错误1 hive (edu)> insert into huanhuan values(1,'haoge'); Query ID = root_20240110071417_fe1517ad-3607-41f4-bdcf-d00b98ac443e Total jobs = 1
报错1:执行到如下就不执行了,没有显示Successfully registered new MBean. [root@slave1 bin]# /usr/local/software/flume-1.9.0/bin/flume-ng agent -n a1 -c /usr/local/softwa
虚拟及没有启动任何服务器查看jps会显示jps,如果没有显示任何东西 [root@slave2 ~]# jps 9647 Jps 解决方案 # 进入/tmp查看 [root@slave1 dfs]# cd /tmp [root@slave1 tmp]# ll 总用量 48 drwxr-xr-x. 2
报错1 hive> show databases; OK Failed with exception java.io.IOException:java.lang.RuntimeException: Error in configuring object Time taken: 0.474 se
报错1 [root@localhost ~]# vim -bash: vim: 未找到命令 安装vim yum -y install vim* # 查看是否安装成功 [root@hadoop01 hadoop]# rpm -qa |grep vim vim-X11-7.4.629-8.el7_9.x
修改hadoop配置 vi /usr/local/software/hadoop-2.9.2/etc/hadoop/yarn-site.xml # 添加如下 <configuration> <property> <name>yarn.nodemanager.res