Pregunta

He estado tratando de seguir las pautas en este artículo de Microsoft Para autenticar contra Apache con Kerberos y AD.Probé con éxito la comunicación entre el servidor Apache y el servidor AD con kinit.Sin embargo, cuando intento acceder a una página restringida en el servidor con IE, aparece un error interno del servidor y aparece lo siguiente en el registro de errores de 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)

Ejecuté un truss en el proceso de Apache y confirmé que, de hecho, se está cargando correctamente el archivo keytab.Me pregunto si hay algún problema con el formato del archivo de tabla de claves...

HTTP/srvnfssol1.dev.local@DEV.LOCAL

Aunque no estoy seguro de lo que me estoy perdiendo.O qué otras cosas comprobar.

¿Alguna sugerencia?

Gracias

Pedro

¿Fue útil?

Solución

De acuerdo.Se supone que las tablas de claves contienen el nombre principal del servicio, en este caso "HTTP/srvnfssol1.dev.local@DEV.LOCAL" y la clave de cifrado.Veo que los documentos de MS dicen que simplemente se haga eco de eso en un archivo, pero no creo que sea correcto.

Necesitará utilizar la utilidad ktpass para crear la tabla de claves.Los documentos de MS son aquí.

En particular, deberá especificar KRB5_NT_SRV_HST, y la mayoría del resto de las opciones pueden ser predeterminadas.

Muestra en mi 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)

Si el servidor de directorio activo es el KDC, necesitará utilizar el /map <name> argumento, donde <name> es la cuenta de computadora en el directorio activo que representa el servidor.

Algunos detalles de cómo funciona todo esto.Cuando navega por el sitio web, debería responder con un WWW-Authenticate:Negocie el encabezado y su navegador enviará una solicitud al KDC (servidor de directorio activo) para obtener un ticket de Kerberos para el servicio.El servidor AD buscará la clave de cifrado del ticket utilizando el nombre principal del servicio y enviará un ticket de servicio cifrado al navegador.Una vez que el navegador tenga el ticket de servicio, volverá a emitir la solicitud HTTP con un encabezado de autenticación que contiene el ticket.El servidor Apache buscará su clave en la tabla de claves, descifrará el ticket y otorgará acceso.

El error "entrada de tabla de claves no encontrada" ocurre porque Apache no se encuentra en la tabla de claves.También puede suceder si la resolución del nombre/los reinos no están configurados correctamente.

Debería poder ver todas las solicitudes de Kerberos AP-REQ/AP-REP/TGS-REQ/TGS-REP usando Wireshark en el cliente, tcp o udp puerto 88.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top