kerberos preauth pkinit 初始化失败:没有为 pkinit 支持正确配置领域

kerberos preauth pkinit 初始化失败:没有为 pkinit 支持正确配置领域

我已在 debian wheezy 上成功安装了 Kerberos,并且可以使用 kinit 中的 Kerberos 票证执行服务身份验证(Apache、ssh)。

我想使用 kinit (pkinit) 证书而不是密码。

我已按照描述的步骤进行操作这里

我正在尝试使用此命令进行身份验证:

kinit -C FILE:client.pem,client.key [email protected]

返回密码不正确。

我很确定问题来自服务器而不是客户端。从wireshark,客户端在使用pkinit 时发送其证书。由于 kdc 未提供 AS-REP,因此客户端可能会收到“密码不正确”的通用错误消息,这意味着它无法破译其票证(因为没有任何票证被输入)。

我最终得到了该服务器 /etc/krb5.conf 配置:

[realms]
 MAYTACAPAC.INC = { 
  kdc             = kerberos.maytacapac.inc
  admin_server    = kerberos.maytacapac.inc
  default_domain  = maytacapac.inc
  detabase_module = openldap_ldapconf

  kdc_tcp_ports   = 88
  allow_pkinit    = yes 
  pkinit_identity = FILE:/root/pkinit/kdc.pem,/root/pkinit_wiki/kdc.key
  pkinit_anchors  = FILE:/root/pkinit/ca.pem
  module          = pkinit:/usr/lib/x86_64-linux-gnu/krb5/plugins/preauth/pkinit.so
} 

然后我启动 krb5-kdc 服务,日志文件中有以下消息:

# systemctl -l status krb5-kdc
● krb5-kdc.service - Kerberos 5 Key Distribution Center
Loaded: loaded (/lib/systemd/system/krb5-kdc.service; enabled)
Drop-In: /lib/systemd/system/krb5-kdc.service.d
       └─slapd-before-kdc.conf
Active: active (running) since Fri 2016-04-29 14:59:57 CEST; 1min 3s ago
Process: 1042 ExecStart=/usr/sbin/krb5kdc -P /var/run/krb5-kdc.pid $DAEMON_ARGS (code=exited, status=0/SUCCESS)
Main PID: 1043 (krb5kdc)
CGroup: /system.slice/krb5-kdc.service
       └─1043 /usr/sbin/krb5kdc -P /var/run/krb5-kdc.pid
Apr 29 14:59:57 kerberos krb5kdc[1042]: preauth pkinit failed to initialize: No realms configured correctly for pkinit support
Apr 29 14:59:57 kerberos krb5kdc[1042]: setting up network...
Apr 29 14:59:57 kerberos krb5kdc[1042]: listening on fd 8: udp 0.0.0.0.88 (pktinfo)
Apr 29 14:59:57 kerberos krb5kdc[1043]: commencing operation

这说明这一边有问题。

我用谷歌搜索了这个错误一段时间,但没有成功。 kinit 对于密码验证仍然可以正常工作。

更新

我已将证书放在默认目录 /var/lib/krb5kdc 中。当我重新启动服务器时,所描述的错误将从日志中消失。

但是,现在,当我尝试从客户端的服务器获取 TGT 时出现错误。我在服务器日志中得到:

preauth (pkinit) verify failure: Key parameter not accepted

我在客户端收到此错误消息:

kinit: krb5_get_init_creds: PREAUTH_FAILED

Wireshark 向我显示此错误作为 as-req 的回复:

KDC_ERR_KEY_TOO_WEAK

我在客户端 /etc/krb5.conf 中设置了 pkinit_dh_min_bits = 1024。现在正在工作,我得到了我的票 \o/

但是,我更喜欢使用至少 2048 位长的密钥进行 dh 交换,但现在不能(出现相同的最后一个错误)。

看起来客户端想要使用 1024 位 dh 参数,然后服务器拒绝并关闭连接。我不知道如何强制客户端提供 >=2048 位 dh 参数,因为客户端 /etc/krb5.conf 中的 pkinit_dh_min_bits = 2048 没有任何效果。

相关内容