Red Hat Training

A Red Hat training course is available for RHEL 8

57.4. Garantizar la presencia de un certificado firmado externamente en una entrada de servicio de IdM mediante un libro de jugadas de Ansible

En esta sección se describe cómo utilizar el módulo ansible-freeipa service para garantizar que un certificado emitido por una autoridad de certificación (CA) externa se adjunte a la entrada IdM del servicio HTTP. Tener el certificado de un servicio HTTP firmado por una CA externa en lugar de la CA IdM es especialmente útil si su CA IdM utiliza un certificado autofirmado.

Requisitos previos

Procedimiento

  1. Cree un archivo de inventario, por ejemplo inventory.file:

    $ touch inventory.file
  2. Abra la página inventory.file y defina el servidor IdM que desea configurar en la sección [ipaserver]. Por ejemplo, para indicar a Ansible que configure server.idm.example.com, introduzca:

    [ipaserver]
    server.idm.example.com
  3. Haga una copia del archivo /usr/share/doc/ansible-freeipa/playbooks/service/service-member-certificate-present.yml, por ejemplo:

    $ 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
  4. Opcional: si el certificado está en formato PEM (Privacy Enhanced Mail), convierta el certificado al formato DER (Distinguished Encoding Rules) para facilitar su manejo a través de la interfaz de línea de comandos (CLI):

    $ openssl x509 -outform der -in cert1.pem -out cert1.der
  5. Decodifique el archivo DER a la salida estándar utilizando el comando base64. Utilice la opción -w0 para deshabilitar el envoltorio:

    $ base64 cert1.der -w0
    MIIC/zCCAeegAwIBAgIUV74O+4kXeg21o4vxfRRtyJm...
  6. Copiar el certificado de la salida estándar al portapapeles.
  7. Abra el archivo /usr/share/doc/ansible-freeipa/playbooks/service/service-member-certificate-present-copy.yml para editarlo y ver su contenido:

    ---
    - name: Service certificate present.
      hosts: ipaserver
      become: true
      gather_facts: false
    
      tasks:
      # Ensure service certificate is present
      - ipaservice:
          ipaadmin_password: MyPassword123
          name: HTTP/www.example.com
          certificate: |
            - MIICBjCCAW8CFHnm32VcXaUDGfEGdDL/...
          [...]
          action: member
          state: present
  8. Adapte el archivo:

    • Sustituya el certificado, definido mediante la variable certificate, por el certificado que ha copiado de la CLI. Tenga en cuenta que si utiliza la variable certificate: con el carácter de tubería || como se indica, puede introducir el certificado DE ESTA MANERA en lugar de tener que introducirlo en una sola línea. Esto facilita la lectura del certificado.
    • Cambia la contraseña del administrador de IdM, definida por la variable ipaadmin_password.
    • Cambie el nombre de su cliente IdM en el que se ejecuta el servicio HTTP, definido por la variable name.
    • Cambia cualquier otra variable relevante.
  9. Guarde y salga del archivo.
  10. Ejecute el playbook de Ansible especificando el archivo del playbook y el archivo de inventario:

    $ ansible-playbook -v -i path_to_inventory_directory/inventory.file /usr/share/doc/ansible-freeipa/playbooks/service/service-member-certificate-present-copy.yml

Pasos de verificación

  1. Inicie sesión en la interfaz web de IdM como administrador de IdM.
  2. Navegue hasta IdentityServices.
  3. Haga clic en el nombre del servicio con el certificado recién añadido, por ejemplo HTTP/client.idm.example.com.

En la sección Service Certificate, a la derecha, puede ver el certificado recién añadido.