Kerberos-Service-Principal-Namen und eine Chiffrierschlüsseldatei erstellen
Diese Task ist für die Verarbeitung von SPNEGO-Web- oder Kerberos-Authentifizierungsanforderungen an WebSphere Application Server erforderlich. Für die Erstellung eines Kerberos-Service-Principal-Namens und einer Chiffrierschlüsseldatei können Sie die KDCs (Key Distribution Center) der Betriebssysteme von Microsoft Windows, IBM i, Linux, Solaris, Massachusetts Institute of Technology (MIT) und z/OS verwenden.
Informationen zu diesem Vorgang
Kerberos-Service-Principal-Namen und Chiffrierschlüsseldatei mit dem KDC von Microsoft Windows erstellen
Diese Task wird auf der Domänencontrollermaschine mit Active Directory ausgeführt. Führen Sie die folgenden Schritte aus, um sicherzustellen, dass Microsoft Windows 2000 oder Windows 2003 Server mit dem aktiven Active Directory-Domänencontroller ordnungsgemäß für das zugehörige Key Distribution Center (KDC) konfiguriert ist.
- Erstellen Sie ein Benutzerkonto
in Microsoft Active Directory für
WebSphere Application Server.
Klicken Sie auf Start > Programme > Verwaltung > Active Directory-Benutzer und -Computer.
Verwenden Sie den Namen für WebSphere Application Server. Wenn der Anwendungsserver, den Sie auf der WebSphere Application Server-Maschine ausführen, beispielsweise den Namen myappserver.austin.ibm.com hat, erstellen Sie in Active Directory einen neuen Benutzer mit dem Namen myappserver.
Stellen Sie sicher, dass unter "Computer und Domänencontroller" nicht der Computername myappserver aufgelistet ist. Wenn Sie bereits einen Computer mit dem Namen myappserver haben, müssen Sie ein anderes Benutzerkonto erstellen.- Klicken Sie auf Start > Programme > Verwaltung > Active Directory-Benutzer und -Computer > Computer.
- Klicken Sie auf Programme > Verwaltung > Active Directory-Benutzer und -Computer > Domänencontroller.
- Verwenden Sie den Befehl setspn, um dem Namen des Kerberos-Service-Principals
<Servicename>/<vollständig qualifizierter Hostname> einem
Microsoft-Benutzerkonto zuzuordnen.
Der Servicename für die SPNEGO-Webauthentifizierung muss HTTP sein. Für die Kerberos-Authentifizierung kann jedoch jede Zeichenfolge, die vom KDC unterstützt wird, als Servicename angegeben werden.
Nachfolgend sehen Sie ein Beispiel für die Verwendung des Befehls setspn für die SPNEGO-Webauthentifizierung:
C:\Program Files\Support Tools> setspn -A HTTP/myappserver.austin.ibm.com myappserver
Anmerkung: Der Hostname muss ein vollständig qualifizierter Hostname sein.Wichtig: Stellen Sie sicher, dass nicht mehreren Microsoft-Benutzerkonten dieselben SPNs (Service Principal Names) zugeordnet sind. Wenn Sie einen SPN mehreren Benutzerkonten zuordnen, kann der Web-Browser-Client WebSphere Application Server ein NTLM-Token (NT LAN Manager) anstelle eines SPNEGO-Tokens zuordnen. - Erstellen Sie die
Kerberos-Chiffrierschlüsseldatei und stellen Sie sie für WebSphere Application Server zur Verfügung. Verwenden Sie das Tool ktpass aus dem
Windows-Server-Toolkit, um die Kerberos-Chiffrierschlüsseldatei (krb5.keytab) für den SPN zu erstellen. Anmerkung: Eine Kerberos-Chiffrierschlüsseldatei enthält eine Liste von Schlüsseln, die zu Benutzerkennwörtern analog sind. Hosts müssen ihre Kerberos-Chiffrierschlüsseldateien unbedingt schützen. Dazu werden sie auf der lokalen Festplatte gespeichert.
Verwenden Sie das Tool ktpass aus dem Windows-Server-Toolkit, um die Kerberos-Chiffrierschlüsseldatei für den Service Principal Name (SPN) zu erstellen. Verwenden Sie die aktuelle Version des Tools ktpass für die von Ihnen verwendete Version von Windows Server. Verwenden Sie beispielsweise die Windows-2003-Version des Tools für Windows 2003.
Führen Sie den Befehl ktpass -? über die Befehlszeile aus, um die richtigen Parameterwerte für das Tool ktpass zu bestimmen. Dieser Befehl zeigt an, ob das Tool ktpass für das jeweilige Betriebssystem den Parameterwert -crypto RC4-HMAC oder -crypto RC4-HMAC-NT verwendet. Damit keine Warnungen vom Toolkit ausgegeben werden, müssen Sie den Parameterwert -ptype KRB5_NT_PRINCIPAL angeben.
Die Version des Tools ktpass für Windows 2003 Server unterstützt den Verschlüsselungstyp RC4-HMAC und single Data Encryption Standard (DES). Weitere Informationen zum Tool ktpass finden Sie unter Windows 2003 Technical Reference - Ktpass overview.
Der folgende Code zeigt die Funktionen, die verfügbar sind, wenn Sie den Befehl ktpass -? über die Befehlszeile eingeben. Diese Informationen können je nach verwendeter Version des Toolkit unterschiedlich sein:C:\Program Files\Support Tools>ktpass -? Command line options: ---------------------most useful args [- /] out : Keytab to produce [- /] princ : Principal name (user@REALM) [- /] pass : password to use use "*" to prompt for password. [- +] rndPass : ... or use +rndPass to generate a random password [- /] minPass : minimum length for random password (def:15) [- /] maxPass : maximum length for random password (def:256) ---------------------less useful stuff [- /] mapuser : map princ to this user account (default: don't) [- /] mapOp : how to set the mapping attribute (default: add it) [- /] mapOp : is one of: [- /] mapOp : add : add value (default) [- /] mapOp : set : set value [- +] DesOnly : Set account for des-only encryption (default:don't) [- /] in : Keytab to read/digest ---------------------options for key generation [- /] crypto : Cryptosystem to use [- /] crypto : is one of: [- /] crypto : DES-CBC-CRC : for compatibility [- /] crypto : DES-CBC-MD5 : for compatibliity [- /] crypto : RC4-HMAC-NT : default 128-bit encryption [- /] ptype : principal type in question [- /] ptype : is one of: [- /] ptype : KRB5_NT_PRINCIPAL : The general ptype-- recommended [- /] ptype : KRB5_NT_SRV_INST : user service instance [- /] ptype : KRB5_NT_SRV_HST : host service instance [- /] kvno : Override Key Version Number Default: query DC for kvno. Use /kvno 1 for Win2K compat. [- +] Answer : +Answer answers YES to prompts. -Answer answers NO. [- /] Target : Which DC to use. Default:detect ---------------------options for trust attributes (Windows Server 2003 Sp1 Only [- /] MitRealmName : MIT Realm which we want to enable RC4 trust on. [- /] TrustEncryp : Trust Encryption to use; DES is default [- /] TrustEncryp : is one of: [- /] TrustEncryp : RC4 : RC4 Realm Trusts (default) [- /] TrustEncryp : DES : go back to DES
Wichtig: Verwenden Sie zum Zurücksetzen eines Kennworts für ein Microsoft Windows-Serverkonto nicht den Schalter -pass mit dem Befehl ktpass.Weitere Informationen finden Sie unter Windows 2003 Technical Reference - Ktpass overview.Je nach Verschlüsselungstyp verwenden Sie das Tool ktpass auf eine der folgenden Arten, um die Kerberos-Chiffrierschlüsseldatei zu erstellen. Im folgenden Abschnitt werden die verschiedenen Verschlüsselungstypen beschrieben, die vom Tool "ktpass" verwendet werden. Es ist wichtig, dass Sie den Befehl "ktpass -?" ausführen, um zu bestimmen, welcher Wert für den Parameter "-crypto" von der jeweiligen Version des Toolkits für Ihre Microsoft Windows-Umgebung erwartet wird.- Gehen Sie für den Verschlüsselungstyp Single DES wie folgt vor: Führen Sie in einer Eingabeaufforderung den Befehl ktpass aus:
ktpass -out c:\temp\myappserver.keytab -princ HTTP/myappserver.austin.ibm.com@WSSEC.AUSTIN.IBM.COM -mapUser myappserv -mapOp set -pass was1edu -crypto DES-CBC-MD5 -pType KRB5_NT_PRINCIPAL +DesOnly
Tabelle 1. ktpass für Verschlüsselungstyp Single DES verwenden . In dieser Tabelle wird beschrieben, wie Sie "ktpass" für den Verschlüsselungstyp "Single DES" verwenden.
Option Erläuterung -out c:\temp\myappserver.keytab Der Schlüssel wird in diese Ausgabedatei geschrieben. -princ HTTP/myappserver.austin.ibm.com@WSSEC.AUSTIN.IBM.COM Die Verknüpfung des Benutzeranmeldenamens und des Realms muss in Großbuchstaben angegeben werden. -mapUser Der Schlüssel wird dem Benutzer "myappserver" zugeordnet. -mapOp Diese Option legt die Zuordnung fest. -pass was1edu Diese Option gibt das Kennwort für die Benutzer-ID an. -crypto DES-CBC-MD5 Diese Option verwendet den Verschlüsselungstyp Single DES. -pType KRB5_NT_PRINCIPAL Diese Option gibt den KRB5_NT_PRINCIPAL-Principal-Wert an. Geben Sie diese Option an, um die Ausgabe von Warnungen durch das Toolkit zu verhindern. +DesOnly Diese Option generiert nur DES-Verschlüsselungen. - Geben Sie für den Verschlüsselungstyp RC4-HMAC Folgendes ein: Wichtig: Die Verschlüsselung RC4-HMAC wird nur unterstützt, wenn Sie Windows 2003 Server als KDC verwenden.Führen Sie in einer Eingabeaufforderung den Befehl ktpass aus:
ktpass -out c:\temp\myappserver.keytab -princ HTTP/myappserver.austin.ibm.com@WSSEC.AUSTIN.IBM.COM -mapUser myappserver -mapOp set –pass was1edu -crypto RC4-HMAC -pType KRB5_NT_PRINCIPAL
Tabelle 2. ktpass für Verschlüsselungstyp RC4-HMAC verwenden Option Erläuterung -out c:\temp\myappserver.keytab Der Schlüssel wird in diese Ausgabedatei geschrieben. -princ HTTP/myappserver.austin.ibm.com@WSSEC.AUSTIN.IBM.COM Die Verknüpfung des Benutzeranmeldenamens und des Realms muss in Großbuchstaben angegeben werden. -mapUser Der Schlüssel wird dem Benutzer "myappserver" zugeordnet. -mapOp Diese Option legt die Zuordnung fest. -pass was1edu Diese Option gibt das Kennwort für die Benutzer-ID an. -crypto RC4-HMAC Mit dieser Option wird der Verschlüsselungstyp RC4-HMAC ausgewählt. -pType KRB5_NT_PRINCIPAL Diese Option gibt den KRB5_NT_PRINCIPAL-Principal-Wert an. Geben Sie diese Option an, um die Ausgabe von Warnungen durch das Toolkit zu verhindern. - Für den Verschlüsselungstyp RC4-HMAC-NT:
Führen Sie in einer Eingabeaufforderung den Befehl ktpass aus:
ktpass -out c:\temp\myappserver.keytab -princ HTTP/myappserver.austin.ibm.com@WSSEC.AUSTIN.IBM.COM -mapUser myappserver -mapOp set -pass was1edu -crypto RC4-HMAC-NT -pType KRB5_NT_PRINCIPAL
Die Kerberos-Chiffrierschlüsseldatei für SPNEGO ist erstellt.Tabelle 3. Für den Verschlüsselungstyp RC4-HMAC-NT: Option Erläuterung -out c:\temp\myappserver.keytab Der Schlüssel wird in diese Ausgabedatei geschrieben. -princ HTTP/myappserver.austin.ibm.com@WSSEC.AUSTIN.IBM.COM Die Verknüpfung des Benutzeranmeldenamens und des Realms muss in Großbuchstaben angegeben werden. -mapUser Der Schlüssel wird dem Benutzer "myappserver" zugeordnet. -mapOp Diese Option legt die Zuordnung fest. -pass was1edu Diese Option gibt das Kennwort für die Benutzer-ID an. -crypto RC4-HMAC-NT Diese Option wählt den Verschlüsselungstyp RC4-HMAC-NT aus. -pType KRB5_NT_PRINCIPAL Diese Option gibt den KRB5_NT_PRINCIPAL-Principal-Wert an. Geben Sie diese Option an, um die Ausgabe von Warnungen durch das Toolkit zu verhindern.
- Gehen Sie für den Verschlüsselungstyp Single DES wie folgt vor:
Kerberos-Service-Principal-Namen und eine Chiffrierschlüsseldatei mit den KDCs von iSeries, Linux, Solaris und MIT erstellen
Informieren Sie sich in den Dokumenten zu Ihrer Kerberos-Implementierung über die Befehle kadmin, kadmin.local addprinc und ktadd.
Diese Task wird auf einer Maschine mit dem KDC von Linux, Solaris oder MIT ausgeführt.
- Erstellen Sie einen Kerberos-Service-Principal für die Kerberos-Authentifizierung, z. B.:
WAS/testmach.austin.ibm.com kadmin.local: addprinc WAS/testmach.austin.ibm.com
- Fügen Sie den neu erstellten Kerberos-Service-Principal WAS/testmach.austin.ibm.com zu einer Standarddatei
krb5.keytab hinzu, z. B.:
kadmin.local: ktadd WAS/testmach.austin.ibm.com
Kerberos-Service-Principal-Namen und eine Chiffrierschlüsseldatei mit dem KDC von z/OS erstellen
Vor Verwendung der SPNEGO-Webauthentifizierung (Simple and Protected GSS-API Negotiation) und der Kerberos-Authentifizierung muss der WebSphere Application Server-Administrator auf dem Host, auf dem WebSphere Application Server ausgeführt wird, eine Kerberos-Chiffrierschlüsseldatei erstellen.
Gehen Sie wie folgt vor, um einen SPN (Service-Principal-Namen) zu erstellen:
- Die Kerberos-ID (KERBNAME) muss das Format <Service>/<vollständig qualifizierter Systemname> haben.
- Im folgenden Beispiel wird der Kerberos-SPN für die SPNEGO-Webauthentifizierung (HTTP/host1.pok.ibm.com) erstellt:
ALTUSER ASCR1 KERB(KERBNAME(HTTP/host1.pok.ibm.com))
Fehler vermeiden: Sie müssen sicherstellen, dass die Liste der unterstützten Verschlüsselungstypen, die mit dem Befehl ALTUSER angegeben wird, mit den Angaben konsistent ist, die in der Kerberos-Konfigurationsdatei "krb5.conf" angegeben sind. Wenn in der Konfigurationsdatei "krb5.conf" beispielsweise angegeben ist, dass nur aes256-cts-hmac-sha1-96 unterstützt wird, muss im Operanden ENCRYPT alle Verschlüsseltypen mit Ausnahme von AES256 als nicht unterstützt gekennzeichnet sein.gotcha
- Generieren Sie den Kerberos-Schlüssel für diesen Benutzer. Zu diesem Zweck müssen Sie der ID ein Kennwort zuordnen. Verwenden
Sie diese ID nicht für die Anmeldung am System.
Geben Sie die beiden folgenden
Zeilen ein, sobald ein neuer Kerberos-Schlüssel erforderlich ist. Anmerkung: Der WebSphere- oder KDC-Administrator muss dieses Kennwort kennen, um in der Chiffrierschlüsseldatei einen Eintrag erstellen zu können.
ALTUSER ASCR1 PASSWORD(was1krb) NOEXPIRED ALTUSER ASCR1 NOPASSWORD
- Prüfen Sie, ob dieser Benutzer ein gültiges Kerberos-Segment und einen Schlüssel hat, z. B.:
LISTUSER ASCR1 KERB NORACF USER=ASCR1 KERB INFORMATION ---------------- KERBNAME= HTTP/host1.pok.ibm.com KEY VERSION= 001 KEY ENCRYPTION TYPE= DES NODES3 NODESD
Verwenden Sie den Java-Kerberos-Befehl ktab (<$WAS_HOME>/java/bin/ktab), um eine Kerberos-Chiffrierschlüsseldatei (krb5.keytab) zu erstellen. Gehen Sie dazu wie folgt vor:
- Geben Sie in einer Befehlszeile den Befehl ktab –help ein, um die Syntax für diesen Befehl abzurufen. Beispiel:
(host1)CTC03:/PYRSA1/usr/lpp/zWebSphere/V7R1/java/J5.0/bin(189):>ktab -help Syntax: java com.ibm.security.krb5.internal.tools.Ktab [Optionen] Verfügbare Optionen: -l Namen und Einträge der Chiffrierschlüsseldatei auflisten -a <Principalname> [Kennwort] Eintrag zur Chiffrierschlüsseldatei hinzufügen -d <Principalname> Eintrag aus der Chiffrierschlüsseldatei löschen -k <Name_des_Chiffrierschlüssels> Namen und Pfad der Chiffrierschlüsseldatei mit Präfix "FILE:" angeben -m <Name_der_Quellenchiffrierschlüsseldatei> <Name_der_Zielchiffrierschlüsseldatei> Namen der Quellen- und Zielchiffrierschlüsseldateien für die Zusammenführung angeben
- Geben Sie in einer Befehlszeile den Befehl ktab ein, um den SPN einer Standardchiffrierschlüsseldatei
zuzuordnen, z. B.:
(host1)CTC03:/PYRSA1/usr/lpp/zWebSphere/V7R1/java/J5.0/bin(201):>ktab -a HTTP/host1.pok.ibm.com@LSREALM.POK.IBM.COM ot56prod Done! Service key for principal HTTP/host1.pok.ibm.com@LSREALM.POK.IBM.COM saved
- Prüfen Sie, ob die Standardchiffrierschlüsseldatei den richtigen SPN enthält, z. B.:
(host1)CTC03:/PYRSA1/usr/lpp/zWebSphere/V7R1/java/J5.0/bin(202):>ktab 1 entries in keytab, name: /etc/skrb/krb5.keytab KVNO Principal ---- --------- 1 HTTP/host1.pok.ibm.com@LSREALM.POK.IBM.COM
ftp> bin
ftp> put c:\temp\KRB5_NT_SEV_HST\krb5.keytab
wsadmin>$AdminTask help validateKrbConfig
Die gilt jedoch nicht, wenn JDK 1.6 mit SR3 installiert ist.
Ergebnisse
Sie haben einen Kerberos-Service-Principal-Namen und eine Chiffrierschlüsseldatei in dem KDC erstellt, das WebSphere Application Server für die Verarbeitung von SPNEGO- und/oder Kerberos-Authentifizierungsanforderungen verwendet.