Question

J'ai essayé de suivre les instructions de cet article de Microsoft pour s'authentifier. contre Apache avec Kerberos et AD. J'ai testé avec succès la communication entre le serveur Apache et le serveur AD avec Kinit. Cependant, lorsque je tente d'accéder à une page restreinte sur le serveur avec IE, une erreur de serveur interne se produit et le message suivant apparaît dans le journal des erreurs d'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)

J'ai exécuté une structure sur le processus Apache et j'ai confirmé qu'il chargeait bien le fichier de clés. Je me demande s’il ya un problème avec le format du fichier keytab ...

HTTP/srvnfssol1.dev.local@DEV.LOCAL

Je ne suis cependant pas sûr de ce qui me manque. Ou quelles autres choses à vérifier.

Des suggestions?

Merci

Peter

Était-ce utile?

La solution

Ok. Les keytabs sont supposés contenir le nom principal du service, dans ce cas & Quot; HTTP/srvnfssol1.dev.local@DEV.LOCAL & Quot; et la clé de cryptage. Je vois où la documentation MS dit simplement pour faire écho à cela dans un fichier, mais je ne pense pas que ce soit juste.

Vous devrez utiliser l'utilitaire ktpass pour créer le clavier. Les documents MS sont ici .

En particulier, vous devrez spécifier KRB5_NT_SRV_HST, et la plupart des autres options peuvent être par défaut.

Exemple sur ma machine:

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)

Si le serveur Active Directory est le KDC, vous devrez utiliser l'argument /map <name>, où <name> est le compte de l'ordinateur dans Active Directory représentant le serveur.

Quelques détails sur le fonctionnement de tout cela. Lorsque vous naviguez sur le site Web, celui-ci répond par un en-tête WWW-Authenticate: Negotiate (Authentifier: négocier) et votre navigateur envoie une demande au KDC (serveur d'annuaire actif) pour obtenir un ticket Kerberos pour le service. Le serveur AD recherchera la clé de chiffrement du ticket à l'aide du nom principal du service et renverra un ticket de service chiffré au navigateur. Une fois que le navigateur a reçu le ticket de service, il relance la demande HTTP avec un en-tête d'authentification contenant le ticket. Le serveur Apache recherchera sa clé dans la clé, déchiffrera le ticket et accordera l'accès.

Entrée de la table de clés " introuvable " erreur se produit car apache ne se trouve pas dans le keytab. Cela peut également se produire si la résolution de noms / les domaines ne sont pas configurés correctement.

Vous devriez pouvoir voir toutes les requêtes Kerberos AP-REQ / AP-REP / TGS-REQ / TGS-REP à l'aide de wireshark sur le client, le port TCP ou UDP 88.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top