在初始阶段,客户端在Kerberos数据库中找不到

我在Ubuntu 14.10上安装Squid3,我想用windows kerberos 5在windows server 2012上集成ADDS。我的基础架构如下:

默认网关:

192.168.1.1

DNS和域控制器(Windows Server 2012):

dc.mydomain.com

address 192.168.1.250 netmask 255.255.255.0 gateway 192.168.1.1 

代理(Ubuntu桌面14.10)vmproxy

 address 192.168.1.251 netmask 255.255.255.0 gateway 192.168.1.1 dns-search mydomain.com dns-nameservers 192.168.1.2 

步骤如下

第1步:检查DNS查找:其正向和反向查找工作正常。

第2步:在代理服务器上configuration正确的时区:

  $ sudo service ntp stop $ sudo ntpdate -b dc.mydomain.com $ sudo service ntp start 

步骤3:安装Kerberos客户端库并将Kerberos领域名称设置为MYDOMAIN.COM

 $ sudo apt-get install krb5-user 

第4步:编辑Kerberosconfiguration文件/etc/krb5.conf。

 [libdefaults] default_realm = MYDOMAIN.COM default_tgs_enctypes = rc4-hmac des3-hmac-sha1 default_tkt_enctypes = rc4-hmac des3-hmac-sha1 

检查Kerberosconfiguration是否正确。 通过

 $ kinit [email protected] $ klist 

步骤:5在Active Directory中创build一个专门的用户,并将该用户映射到Kerberos主体名称

 c:/> ktpass -princ HTTP/[email protected] -mapuser [email protected] -crypto rc4-hmac-nt -pass P@ssw0rd -ptype KRB5_NT_PRINCIPAL -out krb5.keytab 

步骤:6将keytab文件复制到vmproxy上的/etc/krb5.keytab


我的/etc/krb5.conf如下:

 [libdefaults] default_realm= MYDOMAIN.COM default_tgs_enctypes=rc4.hmac des3-hmac.sha1 default_tkt_enctypes=rc4.hmac des3-hmac.sha1 [realms] MYDOMAIN.COM={ kdc=dc.mydomain.com admin_server=dc.mydomain.com default_domain=mydomain.com } [domain_realm] .mydomain.com= MYDOMAIN.COM mydomain.com=MYDOMAIN.COM 

现在当我testing从dc.mydomain.com TGT作为:

 $ kinit -V -k -t /etc/krb5.keytab HTTP/[email protected] 

它说:

 Using default cache: /tmp/krb5cc_0 Using principal: HTTP/[email protected] Using Keytab: /etc/krb5.keytab kinit:Client 'HTTP/[email protected]' not found in kerberos database while getting initial credentials 

在使用时

 $ kinit -k 

它说

 kinit:Cannot determine realm for host (principal host/vmproxy@) 

这个命令:

 c:/> ktpass -princ HTTP/[email protected] -mapuser [email protected] -crypto rc4-hmac-nt -pass P@ssw0rd -ptype KRB5_NT_PRINCIPAL -out krb5.keytab 

我相信将HTTP / [email protected]设置为与AD中的[email protected]用户关联的服务主体。 Active Directory通常不允许您作为服务主体进行身份validation(具体来说,不要让它通过AS_REQ获取TGT); 从理论上讲,服务主体应该是接受用户凭证,而不是用来authentication你的Kerberos领域。

这与Unix KDC不同,默认情况下,它通常不区分“服务主体”和“用户主体”,允许通过kinit进行身份validation。 在Active Directory中,相反,KDC假设当您尝试使用kinit时,主体不存在,这往往是相当混乱的。

如果你可以像任何其他用户一样成功进行身份validation,那么我会尝试testing服务主体是否可以运行:

 $ kinit some_other_user $ kvno HTTP/[email protected] 

它只为HTTP/[email protected]获取服务票据。 或者,您可以通过[email protected]进行身份validation,而不是您设置的服务主体。

如果您需要直接将kinit为HTTP/[email protected],我认为这是可能的,但您需要更改相关AD帐户的userPrincipalName属性。 现在我不记得如何做到这一点,但是如果我记得正确的话,你只能有一个这样的UPN; 您不能拥有多个不同的主体名称,您可以像同一个帐户一样使用kinit