mirror of
https://github.com/tips-of-mine/gestion-certificats2.git
synced 2025-06-28 15:08:42 +02:00
![google-labs-jules[bot]](/assets/img/avatar_default.png)
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.
78 lines
3.0 KiB
Plaintext
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
|