diff --git a/roles/client_pki/handlers/main.yml b/roles/client_pki/handlers/main.yml index aa64dd4..b4dce7a 100644 --- a/roles/client_pki/handlers/main.yml +++ b/roles/client_pki/handlers/main.yml @@ -3,3 +3,16 @@ ansible.builtin.systemd: daemon_reload: true listen: Recharger systemd + +# Apres une re-emission du cert (ex: nouveau SAN), recharger les services qui le +# servent (nginx, postfix, slapd...) sinon ils continuent de servir l'ancien cert. +- name: Recharger les consommateurs du cert + ansible.builtin.systemd: + name: "{{ item }}" + state: reloaded + loop: "{{ client_pki_reload_services }}" + loop_control: + label: "{{ item }}" + when: + - not ansible_check_mode + - client_pki_reload_services | length > 0 diff --git a/roles/client_pki/tasks/main.yml b/roles/client_pki/tasks/main.yml index 03cb698..5373efb 100644 --- a/roles/client_pki/tasks/main.yml +++ b/roles/client_pki/tasks/main.yml @@ -71,7 +71,16 @@ path: "{{ client_pki_steppath }}/certs/root_ca.crt" mode: "0644" -- name: Obtenir le certificat d'hote +- name: Lire les SAN du certificat d'hote existant (detection de derive) + ansible.builtin.command: + cmd: "openssl x509 -in {{ client_pki_cert }} -noout -ext subjectAltName" + register: client_pki_san_actuels + changed_when: false + failed_when: false + +# Re-emet si le cert est absent OU si un SAN voulu manque (ex: nouvelle exposition +# ajoutee au plan -> client_pki_sans mis a jour). Plus de garde 'creates' aveugle. +- name: Obtenir / re-emettre le certificat d'hote (absent ou SAN derives) ansible.builtin.command: cmd: >- step ca certificate {{ client_pki_nom_cert }} @@ -80,9 +89,15 @@ --provisioner-password-file {{ client_pki_steppath }}/provisioner.pass {% for s in client_pki_sans | select | unique %}--san {{ s }} {% endfor %} --force - creates: "{{ client_pki_cert }}" environment: STEPPATH: "{{ client_pki_steppath }}" + when: >- + client_pki_san_actuels.rc != 0 + or (client_pki_sans | select | unique | reject('equalto', '') + | reject('in', client_pki_san_actuels.stdout | default('')) + | list | length > 0) + changed_when: true + notify: Recharger les consommateurs du cert - name: Deployer l'unite systemd de renouvellement ansible.builtin.template: