25.4. Assurer la présence d'un certificat signé en externe dans une entrée de service IdM à l'aide d'un playbook Ansible
Cette section décrit comment utiliser le module ansible-freeipa
service
pour s'assurer qu'un certificat émis par une autorité de certification (AC) externe est attaché à l'entrée IdM du service HTTP. Le fait que le certificat d'un service HTTP soit signé par une autorité de certification externe plutôt que par l'autorité de certification IdM est particulièrement utile si votre autorité de certification IdM utilise un certificat auto-signé.
Conditions préalables
- Vous avez installé un service HTTP sur votre hôte.
- Vous avez inscrit le service HTTP dans IdM.
- Vous avez le mot de passe de l'administrateur IdM.
- Vous disposez d'un certificat signé en externe dont le Subject correspond au principal du service HTTP.
Procédure
Créer un fichier d'inventaire, par exemple
inventory.file
:$ touch inventory.file
Ouvrez le site
inventory.file
et définissez le serveur IdM que vous souhaitez configurer dans la section[ipaserver]
. Par exemple, pour demander à Ansible de configurer server.idm.example.com, entrez :[ipaserver] server.idm.example.com
Faites une copie du fichier
/usr/share/doc/ansible-freeipa/playbooks/service/service-member-certificate-present.yml
, par exemple :$ cp /usr/share/doc/ansible-freeipa/playbooks/service/service-member-certificate-present.yml /usr/share/doc/ansible-freeipa/playbooks/service/service-member-certificate-present-copy.yml
Facultatif : si le certificat est au format PEM (Privacy Enhanced Mail), convertissez-le au format DER (Distinguished Encoding Rules) pour faciliter sa manipulation par l'interface de ligne de commande (CLI) :
$ openssl x509 -outform der -in cert1.pem -out cert1.der
Décodez le fichier
DER
sur la sortie standard à l'aide de la commandebase64
. Utilisez l'option-w0
pour désactiver le wrapping :$ base64 cert1.der -w0 MIIC/zCCAeegAwIBAgIUV74O+4kXeg21o4vxfRRtyJm...
- Copier le certificat de la sortie standard dans le presse-papiers.
Ouvrez le fichier
/usr/share/doc/ansible-freeipa/playbooks/service/service-member-certificate-present-copy.yml
pour l'éditer et visualiser son contenu :--- - name: Service certificate present. hosts: ipaserver gather_facts: false vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: # Ensure service certificate is present - ipaservice: ipaadmin_password: "{{ ipaadmin_password }}" name: HTTP/www.example.com certificate: | - MIICBjCCAW8CFHnm32VcXaUDGfEGdDL/... [...] action: member state: present
Adapter le dossier :
-
Remplacez le certificat, défini à l'aide de la variable
certificate
, par le certificat que vous avez copié depuis l'interface de programmation. Notez que si vous utilisez la variablecertificate:
avec le caractère de pipe "|" comme indiqué, vous pouvez entrer le certificat DE CETTE MANIERE plutôt que de devoir l'entrer sur une seule ligne. Cela facilite la lecture du certificat. -
Modifier le mot de passe de l'administrateur IdM, défini par la variable
ipaadmin_password
. -
Modifiez le nom du client IdM sur lequel le service HTTP est exécuté, défini par la variable
name
. - Modifier toute autre variable pertinente.
-
Remplacez le certificat, défini à l'aide de la variable
- Save and exit the file.
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 path_to_inventory_directory/inventory.file /usr/share/doc/ansible-freeipa/playbooks/service/service-member-certificate-present-copy.yml
Verification steps
- Se connecter à l'interface Web IdM en tant qu'administrateur IdM.
-
Naviguez jusqu'à
Identity
Services
. - Cliquez sur le nom du service avec le nouveau certificat ajouté, par exemple HTTP/client.idm.example.com.
Dans la section Service Certificate
à droite, vous pouvez maintenant voir le nouveau certificat ajouté.