mirror of
https://github.com/tips-of-mine/gestion-certificats2.git
synced 2025-06-28 15:08:42 +02:00
Add files via upload
This commit is contained in:
84
scripts/create_root_cert.sh
Normal file
84
scripts/create_root_cert.sh
Normal file
@ -0,0 +1,84 @@
|
||||
#!/bin/bash
|
||||
|
||||
# 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.
|
||||
|
||||
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"
|
||||
|
||||
# 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
|
||||
|
||||
# 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é)
|
||||
openssl genrsa -out "$ROOT_KEY" 2048
|
||||
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=Hauts-de-France/L=Roubaix/O=GestionCertif/CN=GestionCertif Root CA" \
|
||||
-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"
|
Reference in New Issue
Block a user