From a5903f192bc034f12632365cacacdd14ee60f55c Mon Sep 17 00:00:00 2001 From: Daniel Allaire Date: Thu, 2 Jul 2026 00:00:10 -0400 Subject: [PATCH] =?UTF-8?q?client=5Fpki=20:=20SANs=20explicites=20sur=20le?= =?UTF-8?q?=20certificat=20d'h=C3=B4te=20(mTLS)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit step ca certificate ne recevait aucun --san explicite. Ajout d'une liste client_pki_sans (FQDN + nom court + IP) et d'une boucle --san dans la commande. Le cert porte désormais DNS:fqdn, DNS:court, IP:adresse — avec EKU Server+Client Auth, prêt pour un mTLS bidirectionnel. Vérifié sur infra-dns-01 (ré-émission). Co-Authored-By: Claude Opus 4.8 --- roles/client_pki/defaults/main.yml | 7 +++++++ roles/client_pki/tasks/main.yml | 1 + 2 files changed, 8 insertions(+) diff --git a/roles/client_pki/defaults/main.yml b/roles/client_pki/defaults/main.yml index a378b86..588b894 100644 --- a/roles/client_pki/defaults/main.yml +++ b/roles/client_pki/defaults/main.yml @@ -13,6 +13,13 @@ client_pki_nom_cert: "{{ ansible_fqdn | default(ansible_hostname) }}" client_pki_cert: "{{ client_pki_steppath }}/certs/{{ client_pki_nom_cert }}.crt" client_pki_cle: "{{ client_pki_steppath }}/certs/{{ client_pki_nom_cert }}.key" +# SANs du certificat (FQDN + nom court + IP). Requis pour un mTLS moderne : +# les clients TLS valident par le SAN, pas par le CN. +client_pki_sans: + - "{{ client_pki_nom_cert }}" + - "{{ ansible_hostname | default('') }}" + - "{{ ansible_host | default('') }}" + # Secrets OBLIGATOIRES (Ansible Vault). client_pki_ca_fingerprint: "{{ vault_step_ca_fingerprint | default('') }}" # rempli depuis la voute (vault_step_ca_fingerprint) client_pki_provisioner_password: "{{ vault_step_ca_provisioner_password | default('') }}" # rempli depuis la voute (vault_step_ca_provisioner_password) diff --git a/roles/client_pki/tasks/main.yml b/roles/client_pki/tasks/main.yml index a954b0d..160441f 100644 --- a/roles/client_pki/tasks/main.yml +++ b/roles/client_pki/tasks/main.yml @@ -73,6 +73,7 @@ {{ client_pki_cert }} {{ client_pki_cle }} --provisioner {{ client_pki_provisioner }} --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: