2.2. Utiliser Ansible pour configurer le serveur IdM pour l'authentification par carte à puce
Vous pouvez utiliser Ansible pour activer l'authentification par carte à puce pour les utilisateurs dont les certificats ont été émis par l'autorité de certification (AC) du domaine <EXAMPLE.ORG> auquel votre AC de gestion des identités (IdM) fait confiance. Pour ce faire, vous devez obtenir les certificats suivants afin de pouvoir les utiliser lors de l'exécution d'un playbook Ansible avec le script de rôle ipasmartcard_server
ansible-freeipa
:
- Le certificat de l'autorité de certification racine qui a délivré le certificat pour l'autorité de certification <EXAMPLE.ORG> directement ou par l'intermédiaire d'une ou de plusieurs de ses autorités de certification secondaires. Vous pouvez télécharger la chaîne de certificats à partir d'une page web dont le certificat a été émis par l'autorité. Pour plus d'informations, voir l'étape 4 de la section Configuration d'un navigateur pour activer l'authentification par certificat.
-
Le certificat de l'autorité de certification IdM. Vous pouvez obtenir le certificat de l'autorité de certification à partir du fichier
/etc/ipa/ca.crt
sur n'importe quel serveur de l'autorité de certification IdM. - Les certificats de toutes les AC intermédiaires entre l'AC <EXAMPLE.ORG> et l'AC IdM.
Conditions préalables
-
Vous avez un accès
root
au serveur IdM. -
Vous connaissez le mot de passe de l'IdM
admin
. - Vous disposez du certificat de l'autorité de certification racine, du certificat de l'autorité de certification IdM et de tous les certificats des autorités de certification intermédiaires.
Vous avez configuré votre nœud de contrôle Ansible pour qu'il réponde aux exigences suivantes :
- Vous utilisez la version 2.8 ou ultérieure d'Ansible.
-
Vous avez installé le paquetage
ansible-freeipa
sur le contrôleur Ansible. - L'exemple suppose que dans le répertoire ~/MyPlaybooks/ vous avez créé un fichier d'inventaire Ansible avec le nom de domaine complet (FQDN) du serveur IdM.
-
L'exemple suppose que le coffre-fort secret.yml Ansible stocke votre
ipaadmin_password
.
Procédure
Si vos certificats d'autorité de certification sont stockés dans des fichiers d'un format différent, tel que
DER
, convertissez-les au formatPEM
:# openssl x509 -in <filename>.der -inform DER -out <filename>.pem -outform PEM
Le certificat de l'autorité de certification IdM est au format
PEM
et se trouve dans le fichier/etc/ipa/ca.crt
.En option, utilisez l'utilitaire
openssl x509
pour visualiser le contenu des fichiers au formatPEM
et vérifier que les valeursIssuer
etSubject
sont correctes :# openssl x509 -noout -text -in root-ca.pem | more
Naviguez jusqu'à votre répertoire ~/MyPlaybooks/ répertoire :
$ cd ~/MyPlaybooks/
Créez un sous-répertoire dédié aux certificats d'autorité de certification :
$ mkdir SmartCard/
Pour plus de commodité, copiez tous les certificats requis dans le répertoire ~/MyPlaybooks/SmartCard/:
# cp /tmp/root-ca.pem ~/MyPlaybooks/SmartCard/ # cp /tmp/intermediate-ca.pem ~/MyPlaybooks/SmartCard/ # cp /etc/ipa/ca.crt ~/MyPlaybooks/SmartCard/ipa-ca.crt
Dans votre fichier d'inventaire Ansible, spécifiez ce qui suit :
- Les serveurs IdM que vous souhaitez configurer pour l'authentification par carte à puce.
- Le mot de passe de l'administrateur de l'IdM.
Les chemins d'accès aux certificats des autorités de certification dans l'ordre suivant :
- Le fichier du certificat de l'autorité de certification racine
- Les fichiers des certificats de l'autorité de certification intermédiaire
- Le fichier du certificat de l'autorité de certification IdM
Le fichier peut se présenter comme suit :
[ipaserver] ipaserver.idm.example.com [ipareplicas] ipareplica1.idm.example.com ipareplica2.idm.example.com [ipacluster:children] ipaserver ipareplicas [ipacluster:vars] ipaadmin_password=SomeADMINpassword ipasmartcard_server_ca_certs=/home/<user_name>/MyPlaybooks/SmartCard/root-ca.pem,/home/<user_name>/MyPlaybooks/SmartCard/intermediate-ca.pem,/home/<user_name>/MyPlaybooks/SmartCard/ipa-ca.crt
Créez un playbook
install-smartcard-server.yml
avec le contenu suivant :--- - name: Playbook to set up smart card authentication for an IdM server hosts: ipaserver become: true roles: - role: ipasmartcard_server state: present
- Enregistrer le fichier.
Exécutez le playbook Ansible. Spécifiez le fichier du livre de jeu, le fichier contenant le mot de passe protégeant le fichier secret.yml et le fichier d'inventaire :
$ ansible-playbook --vault-password-file=password_file -v -i inventory install-smartcard-server.yml
Le rôle
ipasmartcard_server
Ansible effectue les actions suivantes :- Il configure le serveur HTTP Apache de l'IdM.
- Il active la cryptographie à clé publique pour l'authentification initiale dans Kerberos (PKINIT) sur le centre de distribution de clés (KDC).
- Il configure l'interface Web IdM pour qu'elle accepte les demandes d'autorisation de carte à puce.
En option, si l'autorité de certification qui a émis le certificat utilisateur ne fournit pas de répondeur OCSP (Online Certificate Status Protocol), il peut être nécessaire de désactiver la vérification OCSP pour l'authentification à l'IdM Web UI :
Se connecter au serveur IdM en tant que
root
:ssh root@ipaserver.idm.example.com
Définissez le paramètre
SSLOCSPEnable
àoff
dans le fichier/etc/httpd/conf.d/ssl.conf
:SSLOCSPEnable off
Redémarrez le démon Apache (httpd) pour que les modifications prennent effet immédiatement :
# systemctl restart httpd
AvertissementNe désactivez pas le contrôle OCSP si vous n'utilisez que des certificats d'utilisateur émis par l'autorité de certification IdM. Les répondeurs OCSP font partie de l'IdM.
Pour savoir comment maintenir la vérification OCSP activée, tout en empêchant un certificat d'utilisateur d'être rejeté par le serveur IdM s'il ne contient pas les informations relatives à l'emplacement où l'autorité de certification qui a délivré le certificat d'utilisateur écoute les demandes de service OCSP, voir la directive
SSLOCSPDefaultResponder
dans les options de configuration de Apache mod_ssl.
Le serveur figurant dans le fichier d'inventaire est maintenant configuré pour l'authentification par carte à puce.
Pour activer l'authentification par carte à puce dans l'ensemble de la topologie, définissez la variable hosts
dans le playbook Ansible à ipacluster
:
---
- name: Playbook to setup smartcard for IPA server and replicas
hosts: ipacluster
[...]
Ressources supplémentaires
-
Exemples de playbooks utilisant le rôle
ipasmartcard_server
dans le répertoire/usr/share/doc/ansible-freeipa/playbooks/