ajuda usando o setspn e o ktpass

5

Estou tentando configurar os SPNs e criar um arquivo keytab para o tomcat kerberos spnego Login único.

o servidor que está executando o tomcat7 é ubuntu-ad1.wad.eng.hytrst.com o KDC é kerberos.wad.eng.hytrust.com o domínio é WAD.ENG.HYTRUST.COM estou usando meu nome de usuário do anúncio de [email protected] a conta AD do machiene é [email protected]

primeiro eu crio o spn para associar com um nome de usuário (adoraria uma explicação sobre o porquê eu preciso fazer isso?):

setspn HTTP/ubuntu-ad.wad.eng.hytrust.com [email protected]

Em seguida, crio um keytab para copiar para o servidor da Web:

ktpass /out tomcat.keytab /mapuser [email protected] /crypto ALL /pass * /ptype KRB5_NT_PRINCIPAL 

copio-o para o servidor web e uso ktutil para mesclá-lo com /etc/krb5.keytab.

quando tento testar isso com o kinit, não consigo ler com êxito a partir da tabela de chaves:

hytrust@ubuntu-ad1:/usr/share/tomcat7/conf$ sudo  kinit -k -t /home/hytrust/tomcat.keytab http/[email protected]
kinit: Client not found in Kerberos database while getting initial credentials
hytrust@ubuntu-ad1:/usr/share/tomcat7/conf$ sudo  kinit -k -t /home/hytrust/tomcat.keytab HTTP/[email protected]
kinit: Client not found in Kerberos database while getting initial credentials
hytrust@ubuntu-ad1:/usr/share/tomcat7/conf$ sudo  kinit -k -t /home/hytrust/tomcat.keytab [email protected]
kinit: Client not found in Kerberos database while getting initial credentials
hytrust@ubuntu-ad1:/usr/share/tomcat7/conf$ sudo  kinit -k -t /home/hytrust/tomcat.keytab ubuntu-ad1.wad.eng.hytrust.com
kinit: Client not found in Kerberos database while getting initial credentials
hytrust@ubuntu-ad1:/usr/share/tomcat7/conf$ sudo  kinit -k -t /home/hytrust/tomcat.keytab [email protected]
kinit: Key table entry not found while getting initial credentials
hytrust@ubuntu-ad1:/usr/share/tomcat7/conf$ sudo  kinit -k -t /home/hytrust/tomcat.keytab [email protected]
kinit: Client not found in Kerberos database while getting initial credentials
hytrust@ubuntu-ad1:/usr/share/tomcat7/conf$ sudo  kinit  [email protected] for [email protected]: 
kinit: Preauthentication failed while getting initial credentials
hytrust@ubuntu-ad1:/usr/share/tomcat7/conf$ sudo  kinit  [email protected]

Senha para [email protected]:     hytrust @ ubuntu-ad1: / usr / share / tomcat7 / conf $

como o "Cliente não encontrado no banco de dados Kerberos" difere de "Cliente não encontrado no banco de dados Kerberos"? o que esses erros realmente significam?

    
por Arthur Ulfeldt 03.06.2011 / 01:54

2 respostas

7

(essa questão é um pouco antiga, mas minha análise pode ajudar outras pessoas)

Parece que você está perdendo algum entendimento e, portanto, não está executando os comandos corretamente. Eu estou supondo que o seu KDC é realmente um KDC do Active Directory. Isso não está totalmente claro em sua descrição.

Primeiramente, no kerberos de diretório ativo (ao contrário do padrão MIT / Heimdal kerberos) um Nome Principal de Serviço (SPN - um serviço que executa uma máquina) precisa ser conectado a um Nome Principal de Usuário (UPN, um usuário localizado atrás de uma máquina) . Daí o mapeamento.

setspn adicionará o nome principal do serviço a um usuário adicionando o atributo ldap ao cn do usuário

O ktpass irá mostrar a sua chave de teclado e reescrever o UserPrincipalName para username /fully.qualified.domainname@REALM.

Ao fazer uma kinit -k -t key.tab principal , a pesquisa acontecerá no arquivo key.tab e no UPN do diretório ativo. Se não puder encontrar o principal na guia de chave, ocorrerá um erro como "Entrada da tabela de chaves não encontrada ao obter as credenciais iniciais". Se não puder ser encontrado no diretório, ele fornecerá "Cliente não encontrado no banco de dados Kerberos enquanto obtém as credenciais iniciais".

Agora, para o seu problema em questão. Parece que você está perdendo o parâmetro / princ para o ktpass. Isso é necessário para obter o principal no arquivo da guia principal e obter o mapeamento correto. Gostaria de saber o que dá um klist -k keytab .

para que suas linhas sejam algo como (incluindo colocar o REALM no local certo:

setspn HTTP/ubuntu-ad.wad.eng.hytrust.com aulfeldt

ktpass /princ HTTP/[email protected] /out tomcat.keytab /mapuser aulfeldt /crypto ALL /pass * /ptype KRB5_NT_PRINCIPAL

Extra: se você estiver usando o SAMBA 4 com a ferramenta samba para fazer isso, precisará alterar manualmente userPrincipalName para (neste caso): HTTP/[email protected] .HYTRUST.COM isso ocorre porque a geração de abas de teclas do samba não atualiza o UPN e, portanto, você receberá um erro ao fazer uma pesquisa.

Em uma nota lateral: um nome de máquina do diretório ativo é COMPUTER $ (marque o $). Você está de fora.

    
por 15.01.2014 / 23:35
3

Tente usar "setspn -Q" no Windows para ver se o SPN foi criado corretamente:

C:\Windows\System32>setspn -Q HTTP/util01.example.com
CN=util01,OU=Servers,DC=example,DC=com
        HTTP/util01.example.com

Existing SPN found!

Em seguida, verifique o arquivo keytab para ver se ele corresponde:

[apache@util01 ~]$ klist -e -k /etc/httpd/conf/auth_httpd.keytab 
Keytab name: FILE:/etc/httpd/conf/auth_httpd.keytab
KVNO Principal
---- --------------------------------------------------------------------------
   3 HTTP/[email protected] (DES cbc mode with RSA-MD5) 

Se eles não corresponderem (exceto o bit de realm do EXAMPLE.COM), corrija-o de forma que eles façam a reexportação do keytab com o ktpass.

Se eles corresponderem, você poderá obter um ticket exatamente para o SPN especificado no keytab (não inclua o domínio):

$ sudo kinit -k keytab.file HTTP/util01.example.com
    
por 04.06.2011 / 02:24