20.11. Demander un nouveau certificat d'utilisateur et l'exporter vers le client

En tant qu'administrateur Identity Management (IdM), vous pouvez configurer un serveur web fonctionnant sur un client IdM pour demander aux utilisateurs qui utilisent des navigateurs web pour accéder au serveur de s'authentifier avec des certificats émis par un sous-CA IdM spécifique. Complétez cette section pour demander un certificat d'utilisateur à un sous-CA IdM spécifique et pour exporter le certificat et la clé privée correspondante sur l'hôte à partir duquel l'utilisateur souhaite accéder au serveur web à l'aide d'un navigateur web. Ensuite, il faut importer le certificat et la clé privée dans le navigateur.

Procédure

  1. Si vous le souhaitez, créez un nouveau répertoire, par exemple ~/certdb/, et faites-en une base de données de certificats temporaire. Si on vous le demande, créez un mot de passe pour la base de données des certificats NSS afin de crypter les clés du certificat qui sera généré lors d'une étape ultérieure :

    # mkdir ~/certdb/
    # certutil -N -d ~/certdb/
    Enter a password which will be used to encrypt your keys.
    The password should be at least 8 characters long,
    and should contain at least one non-alphabetic character.
    
    Enter new password:
    Re-enter password:
  2. Créez la demande de signature de certificat (CSR) et redirigez la sortie vers un fichier. Par exemple, pour créer une CSR avec le nom certificate_request.csr pour un certificat bit 4096 pour l'utilisateur idm_user dans le domaine IDM.EXAMPLE.COM, en définissant le surnom des clés privées du certificat à idm_user pour faciliter la recherche, et en définissant le sujet à CN=idm_user,O=IDM.EXAMPLE.COM:

    # certutil -R -d ~/certdb/ -a -g 4096 -n idm_user -s "CN=idm_user,O=IDM.EXAMPLE.COM" > certificate_request.csr
  3. À l'invite, saisissez le même mot de passe que celui que vous avez saisi lorsque vous avez utilisé certutil pour créer la base de données temporaire. Continuez ensuite à taper randlomly jusqu'à ce qu'on vous dise d'arrêter :

    Enter Password or Pin for "NSS Certificate DB":
    
    A random seed must be generated that will be used in the
    creation of your key.  One of the easiest ways to create a
    random seed is to use the timing of keystrokes on a keyboard.
    
    To begin, type keys on the keyboard until this progress meter
    is full.  DO NOT USE THE AUTOREPEAT FUNCTION ON YOUR KEYBOARD!
    
    
    Continue typing until the progress meter is full:
  4. Soumettez le fichier de demande de certificat au serveur. Indiquez le principal Kerberos à associer au certificat nouvellement émis, le fichier de sortie pour stocker le certificat et, éventuellement, le profil de certificat. Indiquez la sous-CA IdM à laquelle vous souhaitez délivrer le certificat. Par exemple, pour obtenir un certificat du profil IECUserRoles, un profil avec l'extension des rôles d'utilisateur ajoutés, pour le principal idm_user@IDM.EXAMPLE.COM à partir de webclient-ca, et enregistrer le certificat dans le fichier ~/idm_user.pem:

    # ipa cert-request certificate_request.csr --principal=idm_user@IDM.EXAMPLE.COM --profile-id=IECUserRoles --ca=webclient-ca --certificate-out=~/idm_user.pem
  5. Ajoutez le certificat à la base de données NSS. Utilisez l'option -n pour définir le même surnom que celui que vous avez utilisé lors de la création de la CSR, afin que le certificat corresponde à la clé privée dans la base de données NSS. L'option -t définit le niveau de confiance. Pour plus de détails, voir la page de manuel certutil(1). L'option -i spécifie le fichier de certificat d'entrée. Par exemple, pour ajouter à la base de données NSS un certificat avec le pseudonyme idm_user qui est stocké dans le fichier ~/idm_user.pem de la base de données ~/certdb/:

    # certutil -A -d ~/certdb/ -n idm_user -t "P,," -i ~/idm_user.pem
  6. Vérifiez que la clé dans la base de données NSS n'indique pas (orphan) comme surnom. Par exemple, pour vérifier que le certificat stocké dans la base de données ~/certdb/ n'est pas orphelin :

    # certutil -K -d ~/certdb/
    < 0> rsa      5ad14d41463b87a095b1896cf0068ccc467df395   NSS Certificate DB:idm_user
  7. Utilisez la commande pk12util pour exporter le certificat de la base de données NSS au format PKCS12. Par exemple, pour exporter le certificat avec le pseudonyme idm_user de la base de données NSS /root/certdb vers le fichier ~/idm_user.p12:

    # pk12util -d ~/certdb -o ~/idm_user.p12 -n idm_user
    Enter Password or Pin for "NSS Certificate DB":
    Enter password for PKCS12 file:
    Re-enter password:
    pk12util: PKCS12 EXPORT SUCCESSFUL
  8. Transférez le certificat vers l'hôte sur lequel vous souhaitez activer l'authentification par certificat pour idm_user:

    # scp ~/idm_user.p12 idm_user@client.idm.example.com:/home/idm_user/
  9. Sur l'hôte vers lequel le certificat a été transféré, rendez le répertoire dans lequel le fichier .pkcs12 est stocké inaccessible au groupe "other" pour des raisons de sécurité :

    # chmod o-rwx /home/idm_user/
  10. Pour des raisons de sécurité, supprimez la base de données NSS temporaire et le fichier .pkcs12 du serveur :

    # rm ~/certdb/
    # rm ~/idm_user.p12