Pergunta

Eu tenho tentado seguir as orientações em este artigo Microsoft para autenticar contra Apache com Kerberos e AD. Tenho testado com sucesso a comunicação entre o servidor Apache eo servidor AD com kinit. No entanto, quando tento acessar uma página restrita no servidor com o IE eu recebo um erro interno do servidor e as seguintes aparece no log de erro apache.

[Wed Sep 24 14:18:15 2008] [debug] src/mod_auth_kerb.c(1483): [client 172.31.37.38] kerb_authenticate_user entered with user (NULL) and auth_type Kerberos
[Wed Sep 24 14:18:15 2008] [debug] src/mod_auth_kerb.c(1174): [client 172.31.37.38] Acquiring creds for HTTP/srvnfssol1.dev.local@DEV.LOCAL
[Wed Sep 24 14:18:15 2008] [error] [client 172.31.37.38] gss_acquire_cred() failed: Miscellaneous failure (see text) (Key table entry not found)

Eu tenho que correr uma treliça sobre o processo de apache e confirmou que ele é de fato o carregamento até o ok arquivo keytab. Eu estou querendo saber se há algo errado com o formato do arquivo keytab ...

HTTP/srvnfssol1.dev.local@DEV.LOCAL

Não estou certo o que estou ausente embora. Ou o que outras coisas para verificar.

Todas as sugestões?

Graças

Peter

Foi útil?

Solução

Ok. Keytabs devem conter o nome principal de serviço, neste caso "HTTP/srvnfssol1.dev.local@DEV.LOCAL" ea chave de criptografia. Eu vejo onde as MS docs dizer apenas ecoar que em um arquivo, mas eu não acho que isso é certo.

Você vai precisar usar o utilitário ktpass para criar o keytab. Os documentos MS são aqui .

Em particular, você precisa especificar KRB5_NT_SRV_HST, ea maioria do resto das opções pode ser padrão.

Amostra dele na minha máquina:

C:\>ktpass /out test.keytab /princ HTTP/srvnfssol1.dev.local@DEV.LOCAL 
           /ptype KRB5_NT_SRV_HST /pass *
Type the password for HTTP/srvnfssol1.dev.local:
Key created.

Output keytab to test.keytab:

Keytab version: 0x502
keysize 62 HTTP/srvnfssol1.dev.local@DEV.LOCAL 
ptype 3 (KRB5_NT_SRV_HST) vno 1 etype 0x1 (DES-CBC-CRC) 
keylength 8 (0xa7f1fb38041c199e)

Se o servidor do Active Directory é o KDC, você vai precisar usar o argumento /map <name>, onde <name> é a conta de computador no Active Directory que representa o servidor.

Alguns detalhes sobre como tudo isso funciona. Quando você navega para o site deve responder com um WWW-Authenticate: negociar cabeçalho, e seu navegador irá enviar uma solicitação para o KDC (servidor do Active Directory) para obter um tíquete Kerberos para o serviço. O servidor AD irá procurar a chave de criptografia para o bilhete usando o nome principal de serviço, e enviar uma volta tíquete de serviço criptografado para o navegador. Uma vez que o navegador tem a permissão de serviço, vai reeditar a solicitação HTTP com um cabeçalho autenticar contendo o bilhete. O servidor Apache irá procurar sua chave na keytab, descriptografar os ingressos e conceder acesso.

A "entrada de chave da tabela não encontrado" erro acontece porque o apache não está encontrando-se no keytab. Também pode acontecer se a resolução de nome / reinos não estão configurados direito.

Você deve ser capaz de ver todos os Kerberos solicita AP-REQ / AP-REP / TGS-REQ / TGS-REP usando wireshark no cliente, porta TCP ou UDP 88.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top