Création d'un nom de principal de service Kerberos et d'un fichier de clés
Cette tâche est nécessaire pour traiter des demandes d'authentification Web SPNEGO ou Kerberos pour WebSphere Application Server. Vous pouvez créer un nom de principal de service et un fichier de clés Kerberos à l'aide des centres de distribution de clés (KDC) des systèmes d'exploitation Microsoft Windows, IBM i, Linux, Solaris, Massachusetts Institute of Technology (MIT) et z/OS.
Pourquoi et quand exécuter cette tâche
Création d'un nom de principal de service Kerberos et d'un fichier de clés à l'aide du centre de distribution de clés de Microsoft Windows :
Cette tâche est effectuée sur la machine du contrôleur de domaine Active Directory. Pour vérifier que le serveur Windows 2003 sur lequel le contrôleur de domaine Active Directory s'exécute est configuré correctement sur le centre de distribution de clés associé, procédez comme suit :
- Créez un compte utilisateur dans Microsoft Active Directory pour
WebSphere Application Server.
Cliquez sur Démarrer->Programmes->Outils d'administration>Utilisateurs et ordinateurs Active Directory.
Utilisez le nom de WebSphere Application Server. Par exemple, si le serveur d'applications que vous exécutez sur la machine WebSphere Application Server s'appelle myappserver.austin.ibm.com, créez un nouvel utilisateur dans un répertoire actif appelé myappserver.
Veillez à ce que vous n'ayez pas de nom d'ordinateur myappserver sous Ordinateurs et contrôleurs de domaine. Si un nom d'ordinateur myappserver existe déjà, alors vous devez créer un nom de compte utilisateur.- Cliquez sur Démarrer -> Programmes -> Outils d'administration -> Utilisateurs et ordinateurs Active Directory->Ordinateurs.
- Cliquez sur Programmes -> Outils d'administration -> Utilisateurs et ordinateurs Active Directory->Contrôleurs de domaine.
- Utilisez la commande setspn pour associer le nom de principal de service Kerberos, <service name>/<fully qualified host name>,
à un compte d'utilisateur Microsoft.
Le nom de service de l'authentification Web SPNEGO doit être HTTP. Toutefois, le nom de service pour l'authentification Kerberos peut être également toute chaîne de caractère autorisée par le KDC.
Voici un exemple de syntaxe de la commande setspn pour l'authentification Web SPNEGO :
C:\Program Files\Support Tools> setspn -A HTTP/myappserver.austin.ibm.com myappserver
Remarque : Le nom d'hôte doit être un nom d'hôte qualifié complet.Important : Assurez-vous de ne pas avoir le même mappage de noms SPN vers plusieurs comptes utilisateur Microsoft. Si vous mappez le même SPN vers plusieurs comptes utilisateur, le client du navigateur Web peut envoyer un jeton NTLM (NT LAN manager)à la place d'un jeton SPNEGO à WebSphere Application Server. - Créez le fichier de clés Kerberos et rendez-le disponible pour WebSphere
Application Server. L'outil ktpass de Windows Server permet de créer
le fichier de clés Kerberos (krb5.keytab) pour le nom de principal de service (SPN). Remarque : Un fichier de clés Kerberos contient la liste des clés analogues aux mots de passe utilisateur. Il est important que les hôtes protègent leurs fichiers de clés Kerberos en les stockant sur le disque local.
Utilisez l'outil ktpass de Windows Server pour créer le fichier de clés Kerberos pour le nom principal de service (SPN). Utilisez la version de l'outil ktpass correspondant au niveau de serveur Windows que vous utilisez. Par exemple, utilisez la version Windows 2003 de l'outil pour un serveur Windows 2003.
Pour déterminer les valeurs de paramètre appropriées pour l'outil ktpass, exécutez la commande ktpass -? à partir de la ligne de commande. Cette commande indique si l'outil ktpass correspondant au système d'exploitation actif utilise la valeur de paramètre -crypto RC4-HMAC ou -crypto RC4-HMAC-NT. Pour éviter les messages d'avertissement du toolkit, vous devez spécifier la valeur de paramètre -ptype KRB5_NT_PRINCIPAL.
La version de serveur Windows 2003 de l'outil ktpass prend en charge le type de chiffrement RC4-HMAC et DES (single data encryption standard). Pour plus d'informations sur l'outil ktpass, voir la référence technique Windows 2003 intitulée Ktpass overview.
Le code suivant montre les fonctions disponibles quand vous entrez la commande ktpass -? sur la ligne de commande. Ces informations peuvent varier selon la version du toolkit que vous utilisez.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
Important : N'utilisez pas l'option -pass avec la commande ktpass pour redéfinir un mot de passe pour un compte de serveur Microsoft Windows.Voir la référence technique Windows 2003 intitulée Ktpass overview pour plus d'informations.En fonction du type de chiffrement, vous utilisez l'outil ktpass de l'une des façons suivantes pour créer le fichier de clés Kerberos. La section qui suit décrit les différents types de chiffrement utilisés par l'outil ktpass. Il est important d'exécuter la commande ktpass -? pour déterminer quelle valeur de paramètre -crypto est attendue par le toolkit dans votre environnement Microsoft Windows.- Type de chiffrement DES unique :A partir d'une invite de la ligne de commande, exécutez la commande ktpass suivante :
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
Tableau 1. Utilisation de ktpass pour le type de chiffrement Single DES. Ce tableau explique l'utilisation de ktpass pour le type de chiffrement Single DES.
Option Explication -out c:\temp\myappserver.keytab La clé est écrite dans ce fichier de sortie. -princ HTTP/myappserver.austin.ibm.com@WSSEC.AUSTIN.IBM.COM La concaténation du nom de connexion de l'utilisateur et du nom de domaine doit se trouver en majuscules. -mapUser La clé est mappée vers l'utilisateur myappserver. -mapOp Cette option définit le mappage. -pass was1edu Cette option correspond au mot de passe de l'ID utilisateur. -crypto DES-CBC-MD5 Cette option utilise le type de chiffrement DES. -pType KRB5_NT_PRINCIPAL Cette option spécifie la valeur du principal KRB5_NT_PRINCIPAL. Indiquez cette option pour éviter les messages d'avertissement du toolkit. +DesOnly Cette option génère uniquement des chiffrements DES. - Type de chiffrement RC4-HMAC :Important : Le chiffrement RC4-HMAC n'est pris en charge que lorsque Windows 2003 Server est utilisé comme centre de distribution de clés.A partir d'une invite de commande, exécutez la commande ktpass suivante.
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
Tableau 2. Utilisation de ktpass pour le type de chiffrement RC4-HMAC Option Explication -out c:\temp\myappserver.keytab La clé est écrite dans ce fichier de sortie. -princ HTTP/myappserver.austin.ibm.com@WSSEC.AUSTIN.IBM.COM La concaténation du nom de connexion de l'utilisateur et du nom de domaine doit se trouver en majuscules. -mapUser La clé est mappée vers l'utilisateur myappserver. -mapOp Cette option définit le mappage. -pass was1edu Cette option correspond au mot de passe de l'ID utilisateur. -crypto RC4-HMAC Cette option sélectionne le type de chiffrement RC4-HMAC. -pType KRB5_NT_PRINCIPAL Cette option spécifie la valeur du principal KRB5_NT_PRINCIPAL. Indiquez cette option pour éviter les messages d'avertissement du toolkit. - Pour le type de chiffrement RC4-HMAC-NT :A partir d'une invite de commande, exécutez la commande ktpass suivante.
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
Le fichier de clés Kerberos est créé pour l'utilisation avec SPNEGO.Tableau 3. Utilisation de ktpass pour le type de chiffrement RC4-HMAC-NT Option Explication -out c:\temp\myappserver.keytab La clé est écrite dans ce fichier de sortie. -princ HTTP/myappserver.austin.ibm.com@WSSEC.AUSTIN.IBM.COM La concaténation du nom de connexion de l'utilisateur et du nom de domaine doit se trouver en majuscules. -mapUser La clé est mappée vers l'utilisateur myappserver. -mapOp Cette option définit le mappage. -pass was1edu Cette option correspond au mot de passe de l'ID utilisateur. -crypto RC4-HMAC-NT Cette option sélectionne le type de chiffrement RC4-HMAC-NT. -pType KRB5_NT_PRINCIPAL Cette option spécifie la valeur du principal KRB5_NT_PRINCIPAL. Indiquez cette option pour éviter les messages d'avertissement du toolkit.
- Type de chiffrement DES unique :
Création d'un nom de principal de service Kerberos et d'un fichier de clé à l'aide des centres de distribution de clés de iSeries, Linux, Solaris et MIT :
Consultez la documentation relative à l'implémentation Kerberos pour obtenir plus d'informations sur les commandes kadmin, kadmin.local addprinc et ktadd .
Cette tâche est effectuée sur une machine KDC Linux, Solaris ou MIT.
- Créez une principal de service Kerberos pour l'authentification Kerberos.
WAS/testmach.austin.ibm.com kadmin.local: addprinc WAS/testmach.austin.ibm.com
- Ajoutez le nouveau principal de service Kerberos, WAS/testmach.austin.ibm.com au
fichier krb5.keytab par défaut, par exemple,
kadmin.local: ktadd WAS/testmach.austin.ibm.com
Création d'un nom de principal de service Kerberos et d'un fichier de clés à l'aide du centre de distribution de clés de z/OS :
Avant que l'authentification Web SPNEGO (Simple and Protected GSS-API Negotiation) et l'authentification Kerberos puissent être utilisées, l'administrateur de WebSphere Application Server doit tout d'abord créer un fichier de clés Kerberos sur l'hôte exécutant WebSphere Application Server.
Pour créer un SPN, procédez comme suit :
- L'ID Kerberos (KERBNAME) doit avoir le format <service>/<nom_système_qualifié_complet>.
- L'exemple suivant crée le SPN Kerberos pour l'authentification Web SPNEGO, HTTP/host1.pok.ibm.com :
ALTUSER ASCR1 KERB(KERBNAME(HTTP/host1.pok.ibm.com))
Eviter les incidents: Vérifiez que la liste des types de chiffrements pris en charge définis dans la commande ALTUSER est cohérente avec ce qui est défini dans le fichier de configuration krb5.conf kerberos. Par exemple, si le fichier de configuration krb5.conf indique que seul aes256-cts-hmac-sha1-96 est pris en charge, tous les types de chiffrements ne doivent pas être pris en chatge pour l'opérande ENCRYPT, sauf AES256.gotcha
- Générez la clé Kerberos pour cet utilisateur. Pour générer cette clé, un mot de passe
doit être associé à cet ID. N'utilisez pas cet ID pour vous connecter
au système. Entrez les deux lignes suivantes lorsqu'une nouvelle clé Kerberos est requise.Remarque : L'administrateur WebSphere ou du centre KDC doit connaître ce mot de passe pour pouvoir créer une entrée dans le fichier de clés.
ALTUSER ASCR1 PASSWORD(was1krb) NOEXPIRED ALTUSER ASCR1 NOPASSWORD
- Vérifiez que cet utilisateur a un segment Kerberos et une clé valides, par exemple,
LISTUSER ASCR1 KERB NORACF USER=ASCR1 KERB INFORMATION ---------------- KERBNAME= HTTP/host1.pok.ibm.com KEY VERSION= 001 KEY ENCRYPTION TYPE= DES NODES3 NODESD
Pour créer un fichier Kerberos keytab (krb5.keytab), utilisez la commande Java™ Kerberos ktab <$WAS_HOME>/java/bin/ktab en procédant comme suit :
- A partir d'une ligne de commande, entrez la commande ktab –help pour obtenir la syntaxe
appropriée pour cette commande. Exemple :
(host1)CTC03:/PYRSA1/usr/lpp/zWebSphere/V7R1/java/J5.0/bin(189):>ktab -help Usage: java com.ibm.security.krb5.internal.tools.Ktab [options] Available options: -l list the keytab name and entries -a <principal_name> [password] add an entry to the keytab -d <principal_name> delete an entry from the keytab -k <keytab_name> specify keytab name and path with FILE: prefix -m <source_keytab_name> <destination_keytab_name> specify merging source keytab file name and destination keytab file name
- A partir de la ligne de commande, utilisez la commande ktab pour ajouter le SPN au
fichier de clés par défaut, par exemple,
(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
- Vérifiez que le SPN correct est le fichier de clés par défaut, par exemple,
(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
Ceci ne s'applique pas toutefois si le JDK 1.6 avec SR3 est installé.
Résultats
Vous avez créé un nom principal de service et un fichier de clés Kerberos dans le centre de distribution de clés utilisé par WebSphere Application Server pour traiter des demandes d'authentification SPNEGO et/ou Kerberos.