Frage

Ich habe versucht, die Richtlinien in diesem Microsoft-Artikel folgen zu authentifizieren gegen Apache mit Kerberos und AD. Ich habe getestet erfolgreich die Kommunikation zwischen dem Apache-Server und dem AD-Server mit kinit. Allerdings, wenn ich eine eingeschränkte Seite auf dem Server mit IE ich einen internen Serverfehler erhalte zuzugreifen versuchen, und die folgende Anzeige erscheint im Apache-Fehlerprotokoll.

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

Ich habe einen Truss auf dem Apache-Prozess ausgeführt und bestätigt, dass sie die Keytab-Datei in Ordnung in der Tat Laden nach oben. Ich frage mich, wenn es etwas falsch mit dem Format der Keytab-Datei ist ...

HTTP/srvnfssol1.dev.local@DEV.LOCAL

Ich bin nicht sicher, was ich aber bin fehlt. Oder was andere Dinge zu überprüfen.

Irgendwelche Vorschläge?

Danke

Peter

War es hilfreich?

Lösung

Ok. Keytabs soll die Dienstprinzipalnamen enthalten, in diesem Fall „HTTP/srvnfssol1.dev.local@DEV.LOCAL“ und der Verschlüsselungsschlüssel. Ich sehe, wo die MS docs nur sagen, dass in eine Datei Echo, aber ich glaube nicht, das ist richtig.

Sie müssen das Dienstprogramm ktpass verwenden, um die keytab zu erstellen. Die MS docs sind hier .

Insbesondere werden Sie KRB5_NT_SRV_HST angeben müssen, und die meisten der restlichen Optionen können Standard sein.

Beispiel davon auf meiner Maschine:

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)

Wenn das Active Directory-Server das KDC ist, müssen Sie das /map <name> Argument verwenden, wobei <name> das Computerkonto in Active Directory ist der Server darstellt.

Einige Details, wie das alles funktioniert. Wenn Sie auf die Website zu sehen soll es mit einer WWW-Authenticate reagieren: Verhandeln Header und Ihr Browser eine Anfrage an das KDC (Active Directory Server) sendet ein Kerberos-Ticket für den Dienst zu bekommen. Der AD-Server den Verschlüsselungsschlüssel für das Ticket mit dem Dienstprinzipalnamen, und senden Sie ein verschlüsseltes Service-Ticket an den Browser zurück schauen. Sobald der Browser das Service-Ticket hat, wird es die HTTP-Anforderung mit einem Authenticate-Header Neuausstellung des Tickets enthalten. Der Apache-Server wird seinen Schlüssel in der keytab, entschlüsselt das Ticket sehen, und den Zugang zu gewähren.

Der „Schlüssel Tabelleneintrag nicht gefunden“ Fehler tritt auf, weil Apache findet sich nicht in der keytab. Kann auch passieren, wenn die Namensauflösung / Realms Recht nicht eingerichtet ist.

Sie sollten Lage sein, alle kerberos zu sehen, fordert AP-REQ / AP-REP / TGS-REQ / TGS-REP mit wireshark auf dem Client, TCP- oder UDP-Port 88.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top