Domanda

Ho cercato di seguire le linee guida in questo articolo di Microsoft per autenticare contro Apache con Kerberos e AD. Ho testato con successo la comunicazione tra il server Apache e il server AD con Kinit. Tuttavia, quando tento di accedere a una pagina riservata sul server con IE, viene visualizzato un errore del server interno e nel registro errori di Apache viene visualizzato quanto segue.

[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)

Ho eseguito una capriata sul processo apache e confermato che sta effettivamente caricando il file keytab ok. Mi chiedo se c'è qualcosa di sbagliato nel formato del file keytab ...

HTTP/srvnfssol1.dev.local@DEV.LOCAL

Non sono sicuro di cosa mi manchi però. O quali altre cose controllare.

Qualche suggerimento?

Grazie

Peter

È stato utile?

Soluzione

Ok. I keytab dovrebbero contenere il nome principale del servizio, in questo caso & Quot; HTTP/srvnfssol1.dev.local@DEV.LOCAL & Quot; e la chiave di crittografia. Vedo dove dicono i documenti MS solo per fare l'eco in un file, ma non penso che sia giusto.

Dovrai usare l'utility ktpass per creare il keytab. I documenti MS sono qui .

In particolare, dovrai specificare KRB5_NT_SRV_HST e la maggior parte delle altre opzioni può essere predefinita.

Esempio sul mio computer:

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 il server Active Directory è il KDC, è necessario utilizzare l'argomento /map <name>, dove <name> è l'account del computer nella directory attiva che rappresenta il server.

Alcuni dettagli su come funziona tutto questo. Quando si accede al sito Web, dovrebbe rispondere con un'intestazione WWW-Authenticate: Negoziare e il browser invierà una richiesta al KDC (server di directory attivo) per ottenere un ticket Kerberos per il servizio. Il server AD cercherà la chiave di crittografia per il ticket utilizzando il nome principale del servizio e invierà un ticket di servizio crittografato al browser. Una volta che il browser ha il ticket di servizio, emetterà nuovamente la richiesta HTTP con un'intestazione autentica contenente il ticket. Il server apache cercherà la sua chiave nel keytab, decodificherà il ticket e garantirà l'accesso.

La voce " tabella delle chiavi non trovata " l'errore si verifica perché apache non si trova nel keytab. Può succedere anche se la risoluzione dei nomi / i regni non sono impostati correttamente.

Dovresti essere in grado di vedere tutte le richieste di Kerberos AP-REQ / AP-REP / TGS-REQ / TGS-REP usando WireShark sulla porta client, tcp o udp 88.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top