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 :

  1. 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.
  2. 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.
  3. 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
      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.
      Le fichier de clés Kerberos est créé pour l'utilisation avec SPNEGO.

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.

  1. Créez une principal de service Kerberos pour l'authentification Kerberos.
    WAS/testmach.austin.ibm.com 
    kadmin.local: addprinc WAS/testmach.austin.ibm.com 
  2. 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 :

  1. L'ID Kerberos (KERBNAME) doit avoir le format <service>/<nom_système_qualifié_complet>.
  2. 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 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
  3. 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
  4. 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 :

  5. 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
       
  6. 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
  7. 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
Rendez le fichier de clés disponible pour WebSphere Application Server. Copiez le fichier krb5.keytab à partir du centre KDC sur la machine de WebSphere Application Server à l'emplacement indiqué dans le fichier de configuration Kerberos (krb5.ini ou krb5.conf). Exemple :
ftp> bin
ftp> put c:\temp\KRB5_NT_SEV_HST\krb5.keytab
Remarque : Un fichier de configuration 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, ce qui ne les rend lisibles que par les utilisateurs autorisés.
Utilisez la commande validateKrbConfig pour valider les fichiers krb5.conf et krb5.keytab,
wsadmin>$AdminTask help validateKrbConfig 
Remarque : Le fichier de clés Kerberos est partagé par l'authentification Kerberos et l'authentification Web SPNEGO. Il est chargé une fois et ne peut pas être régénéré.

Ceci ne s'applique pas toutefois si le JDK 1.6 avec SR3 est installé.

Remarque : Si vous devez fusionner vos fichiers de clés, il est recommandé d'utiliser la commande Java ktab avec l'option -m.

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.


Icône indiquant le type de rubrique Rubrique de tâche



Icône d'horodatage Dernière mise à jour: last_date
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=tsec_kerb_create_spn
Nom du fichier : tsec_kerb_create_spn.html