kadmind错误 – krb5_recvauth:start_seq_get在HDBGET密钥表types中不受支持

我正在尝试将Debian 5.x服务器(heimdal 1.2.dfsg.1-2.1)中的OpenLDAP后端Heimdal KDC迁移到Ubuntu 14.04服务器(heimdal 1.6〜git20131207 + dfsg-1ubuntu1.1)在14.04系统上遇到了kadmind的问题。

一些kerberosfunction工作正常 – 我可以运行kinit,获得一张票并成功使用sshd使用GSSAPI身份validation。 我甚至可以用-l选项成功地使用kadmin。 但是,当我忽略-l选项并尝试与kadmind交谈时,我会遇到错误。 例如,如果我将kadmin / admin密钥表导出到文件/tmp/kadmin.keytab并运行:

kadmin -p kadmin/admin -K /tmp/kadmin.keytab get kadmin/admin

我得到的错误:

 kadmind[38823]: krb5_recvauth: start_seq_get is not supported in the HDBGET keytab type 

这个完全相同的命令,完全相同的kadmin.keytab文件,在debian 5.x系统上工作得很好。

我得到上述错误的情况是我已经从Debian 5.x服务器复制/var/lib/heimdal-kdc/heimdal.db文件到Ubuntu 14.04服务器,或者heimdal.db文件是不存在的。 如果我使用与heimdal软件包安装一起创build的默认heimdal.db文件,则会看到与kadmind不同的错误:

 kadmind[38853]: krb5_recvauth: Decrypt integrity check failed for checksum type hmac-sha1-96-aes256, key type aes256-cts-hmac-sha1-96 

我不明白为什么heimdal.db的内容很重要,因为我使用的是OpenLDAP后端。 当主体位于LDAP目录中时,以某种方式查询静态数据库文件似乎很奇怪。 我已经validation了我已经将Debian 5.x系统中的LDAP目录完整地复制到了Ubuntu 14.04系统,并且没有使用主密钥(没有mkey_file指令,即使我复制了默认的m-key这个文件原来是在Debian 5.x上自动生成的,并没有什么区别)。 不知道我还能做些什么来确保configuration尽可能相似。

我也尝试将最新的heimdal 1.6rc2软件包反向移植到14.04,但得到了同样的错误。 我试图用gdb跟踪kadmind的行为,但是没有任何一个明显的问题跳出来。

有人知道这里可能会发生什么吗? 这里是/etc/krb5.conf和/etc/heimdal-kdc/kdc.conf文件来说明configuration:


 # /etc/krb5.conf [libdefaults] default_realm = EXAMPLE.COM forwardable = true proxiable = true renewable = true scan_interfaces = true [realms] EXAMPLE.COM = { admin_server = localhost kdc = localhost } [domain_realm] example.com = EXAMPLE.COM .example.com = EXAMPLE.COM [logging] default = SYSLOG:INFO 

 # /etc/heimdal-kdc/kdc.conf [logging] kdc = FILE:/var/log/heimdal-kdc.log kdc = SYSLOG:INFO [kdc] database = { dbname = ldap:dc=example,dc=com hdb-ldap-create-base = ou=Kerberos,dc=example,dc=com acl_file = /etc/heimdal-kdc/kadmind.acl } 

看起来1.2和1.6之间的各种代码变化导致了我所看到的问题。 为了解决这个问题,我做了以下几点:

  1. 将kadmin / admin主体添加到/etc/krb5.keytab
  2. --keytab=/etc/krb5.keytab附加到/etc/inetd.conf中的kadmind参数

这告诉kadmind显式地在/etc/krb5.keytab(而不是“HDBGET:”)中查找用于向kdc进行身份validation的kadmin / admin主体。

有关更多信息,请参阅https://github.com/heimdal/heimdal/issues/133