Update create_root_cert.sh

This commit is contained in:
tips-of-mine
2025-06-15 09:55:18 +02:00
committed by GitHub
parent 1ddb7594f5
commit 51b4f42449

View File

@ -17,66 +17,19 @@ chmod 777 "$ROOT_CA_DIR/certs" "$ROOT_CA_DIR/crl" "$ROOT_CA_DIR/newcerts" "$ROOT
# Initialiser les fichiers requis par OpenSSL pour une CA # Initialiser les fichiers requis par OpenSSL pour une CA
touch "$ROOT_CA_DIR/index.txt" 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/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 echo 1000 > "$ROOT_CA_DIR/crlnumber" # Numéro de série initial pour la CRL
# Créer le fichier openssl.cnf pour le Root CA
cat <<EOF > "$ROOT_CNF"
[ ca ]
default_ca = CA_default
[ CA_default ]
dir = $ROOT_CA_DIR # Répertoire où tout est stocké
certs = \$dir/certs # Répertoire des certificats émis
crl_dir = \$dir/crl # Répertoire des CRL (Listes de révocation de certificats)
database = \$dir/index.txt # Fichier d'index de la base de données (pour OpenSSL)
new_certs_dir = \$dir/newcerts # Emplacement par défaut pour les nouveaux certificats
certificate = \$dir/certs/ca.cert.pem # Le certificat CA lui-même
serial = \$dir/serial # Le numéro de série actuel
crlnumber = \$dir/crlnumber # Le numéro de CRL actuel
crl = \$dir/crl.pem # Le fichier CRL lui-même
private_key = \$dir/private/ca.key.pem # La clé privée du CA
RANDFILE = \$dir/private/.rand # Fichier de nombres aléatoires privé
x509_extensions = v3_ca # Extensions X509 à ajouter au certificat
name_opt = ca_default # Options de nom de sujet
cert_opt = ca_default # Options de certificat
default_days = 3650 # Durée de validité par défaut des certificats (10 ans)
default_crl_days = 30 # Durée avant la prochaine mise à jour CRL
default_md = sha256 # Utiliser SHA-256 par défaut
preserve = no # Conserver l'ordre des DN passé
policy = policy_strict # Politique stricte pour le Root CA
[ policy_strict ]
countryName = match
stateOrProvinceName = match
organizationName = match
organizationalUnitName = optional
commonName = supplied
emailAddress = optional
[ v3_ca ]
# Extensions pour le certificat CA Root
subjectKeyIdentifier = hash
authorityKeyIdentifier = keyid:always,issuer
basicConstraints = critical, CA:true # C'est une CA, peut signer d'autres certificats
keyUsage = critical, digitalSignature, cRLSign, keyCertSign
# Ajout de l'URL OCSP au certificat Root CA
# IMPORTANT: Remplacez ocsp.cert-gestion.local par votre vrai nom de domaine OCSP
authorityInfoAccess = OCSP;URI:http://ocsp.cert-gestion.local/
EOF
# Générer la clé privée du Root CA (2048 bits, sans passphrase pour la simplicité) # Générer la clé privée du Root CA (2048 bits, sans passphrase pour la simplicité)
openssl genrsa -out "$ROOT_KEY" 2048 openssl genrsa -out "$ROOT_KEY" 4096
#
chmod 400 "$ROOT_KEY" # Permissions strictes pour la clé privée chmod 400 "$ROOT_KEY" # Permissions strictes pour la clé privée
# Générer le certificat Root CA auto-signé # Générer le certificat Root CA auto-signé
openssl req -x509 -new -nodes -key "$ROOT_KEY" -sha256 -days 3650 -out "$ROOT_CERT" \ openssl req -x509 -new -nodes -key "$ROOT_KEY" -sha256 -days 3650 -out "$ROOT_CERT" \
-subj "/C=FR/ST=Hauts-de-France/L=Roubaix/O=GestionCertif/CN=GestionCertif Root CA" \ -subj "/C=FR/ST=NORD/L=ROUBAIX/O=IT/OU=IT/emailAddress=sec@tips-mine.com/CN=intermediate-cert.$ROOT_DOMAIN/" \
-config "$ROOT_CNF" -extensions v3_ca -config "$ROOT_CNF" -extensions v3_ca
chmod 444 "$ROOT_CERT" # Permissions en lecture seule pour le certificat chmod 444 "$ROOT_CERT" # Permissions en lecture seule pour le certificat