Ich versuche, einen Apache-Server zu kerberisieren und dem erstellten Serverprinzipal zu erlauben, sich bei Active Directory anzumelden. Ich habe eines der zahlreichen online verfügbaren Tutorials befolgt, und es scheint gut zu funktionieren. Ich bin auf der Linux-Seite des Projekts und die Unternehmens-IT auf der Windows-Seite.
Die IT hat mir ein Servicekonto und einen Service-Principal dafür zur Verfügung gestellt. In diesem Beispiel bezeichne ich es als HTTP/mysite.mycorp.com@MYCORP.COM. Sie haben mir eine Keytab-Datei für diesen Principal zur Verfügung gestellt, in der ein Tool namens ktpass.exe auf dem AD-Server ausgeführt wird.
Ich habe überprüft, ob die KVNOs des AD / KDC und der Keytab-Datei übereinstimmen. Alles ist gut.
Es gibt einen richtigen DNS-A-Eintrag für den Hostnamen und einen richtigen PTR-Eintrag für die IP. Beide Server sind zeitsynchron.
Ich kann beim AD / KDC ein Ticket für den oben genannten Dienstprinzipal mit der ausgegebenen Keytab-Datei wie folgt anfordern:
kinit -k -t http.keytab HTTP/mysite.mycorp.com@MYCORP.COM
Das funktioniert. Ich erhalte ein Ticket und kann dieses Ticket beispielsweise zum Abfragen des AD / LDAP-Verzeichnisses verwenden. Das Keytab eignet sich auch hervorragend zum Ausführen einer Single Signon Apache-Site, was teilweise das Ziel dieser Übung ist.
Eine halbe Stunde vergeht.
Versuche, sich mit dem obigen Befehl kinit anzumelden, schlagen jetzt mit der folgenden Meldung fehl:
Client not found in Kerberos database
Ich kann mich nicht als Dienstprinzipal authentifizieren, so als ob der Prinzipal auf dem AD-Server gelöscht worden wäre.
Jetzt wird es komisch, zumindest für mich:
Auf Anfrage führt der AD-Administrator das Tool ktpass.exe erneut aus und erstellt eine neue Keytab-Datei für meinen Dienst. Die KVNO (Key Version Number) wird auf dem Server erhöht, wodurch unser Apache-Testserver die Validierung der Kerberos-Einzelanmeldung beendet. Dies wird bei meiner derzeitigen Konfiguration erwartet. Was uns alle überraschte, war, dass das Kinit-Kommando jetzt wieder funktionierte. Wir kauften uns noch eine halbe Stunde und dann funktionierte es wieder nicht mehr.
Unsere IT-Abteilung ist hier ratlos und spekuliert, dass dies ein Problem mit dem AD-Server selbst ist. Ich denke, es ist Konfiguration, aber laut ihnen gibt es nirgendwo in ihrem Setup eine halbe Stunde Limits.
Ich habe http://www.grolmsnet.de/kerbtut/ befolgt (siehe Abschnitt 7), aber die Methode scheint in der gesamten Dokumentation, die ich gefunden habe, dieselbe zu sein. Ich habe keinen Hinweis auf Fristen für Service-Principals gefunden.
BEARBEITEN: Dies scheint ein Replikationsproblem zu sein. Obwohl beim Replikationsprozess keine Fehler gemeldet werden, wird der SPN-Wert des Dienstkontos von "HTTP/mysite.mycorp.com@MYCORP.COM" in "name-of-service-account@mycorp.com" geändert (zurückgesetzt?) " nach 30 Minuten.
klist
Befehls? Ich erinnere mich, dass ich vor 2 Jahren auf ein ähnliches Problem mit Ubuntu 13.04 und Windows Server 2008R2 gestoßen bin (in meinem Fall betrug die Arbeitszeit mehr als ~ 30 Minuten. IIRC), aber das Aktualisieren der Keytabs hat den Job erledigt.