mirror of
https://github.com/tips-of-mine/gestion-certificats2.git
synced 2025-06-28 18:38: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.
52 lines
1.9 KiB
Bash
52 lines
1.9 KiB
Bash
#!/bin/bash
|
|
set -e
|
|
|
|
# Ce script crée le certificat Root CA (Certificate Authority) auto-signé.
|
|
# Il est destiné à être exécuté une seule fois, au premier lancement de l'application.
|
|
|
|
# Récupérer le domaine racine depuis le premier argument
|
|
ROOT_DOMAIN=$1
|
|
|
|
# Vérifier si ROOT_DOMAIN est fourni
|
|
if [ -z "$ROOT_DOMAIN" ]; then
|
|
echo "Erreur: Le domaine racine (ROOT_DOMAIN) doit être fourni en argument."
|
|
echo "Usage: $0 <votredomaine.com>"
|
|
exit 1
|
|
fi
|
|
|
|
ROOT_CA_DIR="/opt/tls/root"
|
|
ROOT_KEY="$ROOT_CA_DIR/private/ca.key.pem"
|
|
ROOT_CERT="$ROOT_CA_DIR/certs/ca.cert.pem"
|
|
ROOT_CNF="$ROOT_CA_DIR/openssl.cnf"
|
|
|
|
echo "Démarrage de la création du certificat Root CA dans $ROOT_CA_DIR..."
|
|
|
|
# Créer les dossiers nécessaires pour la PKI Root
|
|
mkdir -p "$ROOT_CA_DIR/certs" "$ROOT_CA_DIR/crl" "$ROOT_CA_DIR/newcerts" "$ROOT_CA_DIR/private" "$ROOT_CA_DIR/csr"
|
|
|
|
chmod 777 "$ROOT_CA_DIR/certs" "$ROOT_CA_DIR/crl" "$ROOT_CA_DIR/newcerts" "$ROOT_CA_DIR/private" "$ROOT_CA_DIR/csr"
|
|
|
|
# Copier le fichier de configuration OpenSSL pour la CA Racine
|
|
cp /opt/scripts/configs/root-openssl.conf "$ROOT_CNF"
|
|
|
|
# Initialiser les fichiers requis par OpenSSL pour une CA
|
|
touch "$ROOT_CA_DIR/index.txt"
|
|
|
|
echo 1000 > "$ROOT_CA_DIR/serial" # Numéro de série initial pour les certificats
|
|
echo 1000 > "$ROOT_CA_DIR/crlnumber" # Numéro de série initial pour la CRL
|
|
|
|
# Générer la clé privée du Root CA (2048 bits, sans passphrase pour la simplicité)
|
|
openssl genrsa -out "$ROOT_KEY" 4096
|
|
|
|
#
|
|
chmod 400 "$ROOT_KEY" # Permissions strictes pour la clé privée
|
|
|
|
# Générer le certificat Root CA auto-signé
|
|
openssl req -x509 -new -nodes -key "$ROOT_KEY" -sha256 -days 3650 -out "$ROOT_CERT" \
|
|
-subj "/C=FR/ST=NORD/L=ROUBAIX/O=IT/OU=IT/emailAddress=sec@tips-mine.com/CN=ca.$ROOT_DOMAIN/" \
|
|
-config "$ROOT_CNF" -extensions v3_ca
|
|
|
|
chmod 444 "$ROOT_CERT" # Permissions en lecture seule pour le certificat
|
|
|
|
echo "Certificat Root CA créé avec succès : $ROOT_CERT"
|