Files
gestion-certificats2/scripts/configs/root-openssl.conf
google-labs-jules[bot] 32aced02d6 Fix: Résolution des erreurs de création de périmètre fonctionnel et de certificats.
Ce commit adresse plusieurs problèmes qui empêchaient la création correcte des périmètres fonctionnels et de leurs certificats intermédiaires associés.

Modifications apportées :

1.  **Scripts Shell (create_root_cert.sh, create_intermediate_cert.sh):**
    *   Correction des chemins de copie pour les fichiers de configuration OpenSSL (`root-openssl.conf`, `intermediate-openssl.conf`) pour utiliser `/opt/scripts/configs/` comme source correcte dans l'environnement d'exécution.
    *   Ajout de `set -e` au début des scripts pour un arrêt immédiat en cas d'erreur.
    *   Modification de `scripts/configs/root-openssl.conf` pour que sa directive `dir` pointe vers `/opt/tls/root`, assurant que la CA Racine trouve correctement ses propres fichiers.
    *   Modification de `scripts/create_intermediate_cert.sh` pour que la directive `dir` dans les fichiers `openssl.cnf` des CA intermédiaires soit dynamiquement ajustée au chemin spécifique du périmètre (ex: `/opt/tls/intermediate/nom_perimetre`).
    *   `create_intermediate_cert.sh` accepte maintenant `ROOT_DOMAIN` comme argument et l'utilise pour rendre uniques les CN des certificats intermédiaires et OCSP (ex: `nom_perimetre.intermediate.example.com`).
    *   Correction des chemins de sortie pour la CRL et les fichiers OCSP (clé privée et CSR) dans `create_intermediate_cert.sh` pour utiliser `$INTERMEDIATE_CA_DIR` comme base.

2.  **Contrôleur PHP (PerimeterController.php):**
    *   Extraction dynamique du `ROOT_DOMAIN` à partir du CN du certificat de la CA Racine existante et passage de cette valeur au script `create_intermediate_cert.sh`.
    *   Utilisation d'une expression régulière plus robuste pour l'extraction du `ROOT_DOMAIN`.
    *   Passage des variables d'environnement `OCSP_URL` (depuis la configuration PHP) et `SAN` (vide) au script `create_intermediate_cert.sh` pour éviter les erreurs de "variable has no value" dans OpenSSL.

3.  **Initialisation (app/public/index.php):**
    *   Ajout de logs de débogage et d'une gestion d'erreur défensive pour s'assurer que `$_SESSION['init_root_domain']` est correctement défini avant d'être utilisé pour créer la CA Racine.

Ces changements combinés résolvent le problème initial de création de certificat intermédiaire et plusieurs autres problèmes découverts, menant à une création réussie des périmètres fonctionnels.
2025-06-15 17:12:51 +00:00

78 lines
3.0 KiB
Plaintext

[ ca ]
default_ca = CA_default # The default ca section
[ CA_default ]
dir = /opt/tls/root # Where everything is kept for the Root CA
certs = $dir/certs # Where the issued certs are kept
database = $dir/index.txt # database index file.
# several certs with same subject.
new_certs_dir = $dir/certs # default place for new certs.
certificate = $dir/certs/ca.cert.pem # The CA certificate
serial = $dir/serial # The current serial number
crlnumber = $dir/crlnumber # the current crl number
# must be commented out to leave a V1 CRL
private_key = $dir/private/ca.key.pem # The private key
name_opt = ca_default # Subject Name options
cert_opt = ca_default # Certificate field options
default_days = 365 # how long to certify for
default_crl_days= 30 # how long before next CRL
default_md = sha256 # use SHA-256 by default
preserve = no # keep passed DN ordering
policy = policy_match
[ policy_match ]
countryName = match
stateOrProvinceName = match
organizationName = match
organizationalUnitName = optional
commonName = supplied
emailAddress = optional
[ policy_anything ]
countryName = optional
stateOrProvinceName = optional
localityName = optional
organizationName = optional
organizationalUnitName = optional
commonName = supplied
emailAddress = optional
[ req ]
default_bits = 4096
default_md = sha256
default_keyfile = privkey.pem
distinguished_name = req_distinguished_name
x509_extensions = v3_ca
string_mask = nombstr
[ req_distinguished_name ]
countryName = Country Name (2 letter code)
countryName_default = FR
countryName_min = 2
countryName_max = 2
stateOrProvinceName = State or Province Name (full name)
stateOrProvinceName_default = NORD
localityName = Locality Name (eg, city)
localityName_default = ROUBAIX
0.organizationName = Organization Name (eg, company)
0.organizationName_default = IT
organizationalUnitName = Organizational Unit Name (eg, section)
commonName = Common Name (eg, your name or your server\'s hostname)
commonName_max = 64
emailAddress = EmailAddress
emailAddress_max = 64
emailAddress_default = sec@test.testing
[ v3_ca ]
subjectKeyIdentifier=hash
authorityKeyIdentifier=keyid:always,issuer
basicConstraints = critical,CA:true
[ v3_intermediate_ca ]
subjectKeyIdentifier = hash
authorityKeyIdentifier = keyid:always,issuer
basicConstraints = critical, CA:true, pathlen:0
keyUsage = critical, digitalSignature, cRLSign, keyCertSign