- fix de la creation du .pfx & optimisation
This commit is contained in:
parent
d375f0ca4c
commit
1cbd7ce0c6
|
|
@ -2,12 +2,17 @@
|
|||
|
||||
# shellcheck disable=SC2034
|
||||
|
||||
# CA INSTALLATION
|
||||
CONFIG_DEB_INSTALL_DEFAULT_CA_SERVER="192.168.0.110"
|
||||
CONFIG_DEB_INSTALL_DEFAULT_CA_WILDCARD="*.server.home"
|
||||
CONFIG_DEB_INSTALL_DEFAULT_CA_SERVICES="gitea nginx apache2 mysql postgresql jellyfin"
|
||||
CONFIG_DEB_INSTALL_DEFAULT_CA_CRON="STEP-CA-RENEWAL"
|
||||
CONFIG_DEB_INSTALL_DEFAULT_CA_STEP="step-cli_0.24.4_amd64.deb"
|
||||
CONFIG_DEB_INSTALL_DEFAULT_CA_INSTALL_PATH="/etc/ssl/wildcard"
|
||||
CONFIG_DEB_INSTALL_DEFAULT_CA_FILE_PFX="server.pfx"
|
||||
CONFIG_DEB_INSTALL_DEFAULT_CA_FILE_CRT="server.crt"
|
||||
CONFIG_DEB_INSTALL_DEFAULT_CA_FILE_KEY="server.key"
|
||||
CONFIG_DEB_INSTALL_DEFAULT_CA_CRON="STEP-CA-RENEWAL"
|
||||
# SCRIPT UPDATE INSTALLATION
|
||||
CONFIG_DEB_INSTALL_CRON_UPDATE="CONFIG_DEB_INSTALL_CRON_UPDATE"
|
||||
|
||||
CONFIG_DEB_INSTALL_JSON='[
|
||||
|
|
|
|||
|
|
@ -563,11 +563,20 @@ EOF"
|
|||
|
||||
do_deb_sys_cert_install(){
|
||||
|
||||
local ca_ip wildcard_domain ca_url ca_fingerprint base_domain marker root_crt input_ip step_path temp_root \
|
||||
system_target inter_target server_crt cert_group load_state unit svc_user current_group \
|
||||
local ca_ip wildcard_domain ca_url ca_fingerprint base_domain marker root_crt input_ip step_path \
|
||||
system_target inter_target cert_group load_state unit svc_user current_group \
|
||||
cert_dir cert_crt cert_key cert_key cert_pfx pfx_cmd pfx_input step_bin renew_cmd restart_cmd="" \
|
||||
unit full_command cert_fullchain
|
||||
|
||||
# Fichiers de certificats
|
||||
cert_dir="${CONFIG_DEB_INSTALL_DEFAULT_CA_INSTALL_PATH}"
|
||||
cert_crt="${cert_dir}/${CONFIG_DEB_INSTALL_DEFAULT_CA_FILE_CRT}"
|
||||
cert_key="${cert_dir}/${CONFIG_DEB_INSTALL_DEFAULT_CA_FILE_KEY}"
|
||||
cert_pfx="${cert_dir}/${CONFIG_DEB_INSTALL_DEFAULT_CA_FILE_PFX}"
|
||||
|
||||
# Groupe utilisé pour l'accès aux certificats
|
||||
cert_group="ssl-cert"
|
||||
|
||||
msg_info "=== Configuration Automatisée du Client PKI ==="
|
||||
|
||||
# 1. Saisie des informations de base
|
||||
|
|
@ -577,10 +586,7 @@ do_deb_sys_cert_install(){
|
|||
read -rp "Domaine Wildcard [${CONFIG_DEB_INSTALL_DEFAULT_CA_WILDCARD}] : " INPUT_DOMAIN
|
||||
wildcard_domain=${INPUT_DOMAIN:-${CONFIG_DEB_INSTALL_DEFAULT_CA_WILDCARD}}
|
||||
|
||||
# Petit bonus : on s'assure que le ca_url est bien formé
|
||||
#ca_url="https://$(echo "$ca_ip" | sed 's|https://||')"
|
||||
|
||||
echo -e "Configuration retenue : IP=$ca_ip | Domaine=$wildcard_domain"
|
||||
msg_info "Configuration retenue : IP=$ca_ip | Domaine=$wildcard_domain"
|
||||
|
||||
ca_url="https://$ca_ip"
|
||||
|
||||
|
|
@ -614,17 +620,6 @@ do_deb_sys_cert_install(){
|
|||
msg_error "Échec de l'installation du paquet ${CONFIG_DEB_INSTALL_DEFAULT_CA_STEP}"
|
||||
return 1
|
||||
fi
|
||||
|
||||
# On télécharge une version stable spécifique
|
||||
#VERSION="0.24.4"
|
||||
#URL="https://github.com/smallstep/cli/releases/download/v${VERSION}/step-cli_${VERSION}_amd64.deb"
|
||||
#if wget -q $URL -O /tmp/step.deb; then
|
||||
# dpkg -i /tmp/step.deb > /dev/null 2>&1
|
||||
# rm /tmp/step.deb
|
||||
#else
|
||||
# msg_error "Échec du téléchargement du paquet .deb"
|
||||
# return 1
|
||||
#fi
|
||||
else
|
||||
msg_success "paquet Step CLI déjà installé"
|
||||
fi
|
||||
|
|
@ -641,13 +636,18 @@ do_deb_sys_cert_install(){
|
|||
rm -rf "$step_path"
|
||||
mkdir -p "$step_path"
|
||||
|
||||
# CRUCIAL : On dit à step d'utiliser ce dossier pour TOUTES ses opérations
|
||||
export STEPPATH="$step_path"
|
||||
|
||||
# 2. Utilisation de la Fingerprint confirmée
|
||||
#ca_fingerprint="4873b9eaeb8a7643475939b4035221bd1bc3acd0db00e94df5a76d771459f439"
|
||||
root_ca_fingerprint=$(ssh "root@${ca_ip}" "step certificate fingerprint /var/lib/step-ca/.step/certs/root_ca.crt")
|
||||
|
||||
if [ -z "$root_ca_fingerprint" ]; then
|
||||
msg_error " Impossible de récupérer le fingerprint."
|
||||
return 1
|
||||
msg_error " Impossible de récupérer le fingerprint."
|
||||
return 1
|
||||
else
|
||||
msg_info "fingerprint récupéré : ${root_ca_fingerprint}"
|
||||
fi
|
||||
|
||||
# 3. Liaison (Bootstrap)
|
||||
|
|
@ -658,22 +658,11 @@ do_deb_sys_cert_install(){
|
|||
|
||||
# 4. Génération du Wildcard
|
||||
mkdir -p "${CONFIG_DEB_INSTALL_DEFAULT_CA_INSTALL_PATH}"
|
||||
base_domain=$(echo "$wildcard_domain" | sed 's/\*\.//')
|
||||
|
||||
echo "### THIS IS A TEST ###"
|
||||
echo "### THIS IS A TEST ###"
|
||||
echo "### THIS IS A TEST ### $base_domain"
|
||||
|
||||
base_domain="${wildcard_domain#*.}"
|
||||
|
||||
echo "### THIS IS A TEST ###"
|
||||
echo "### THIS IS A TEST ###"
|
||||
echo "### THIS IS A TEST ### $base_domain"
|
||||
|
||||
|
||||
step ca certificate "$wildcard_domain" \
|
||||
"${CONFIG_DEB_INSTALL_DEFAULT_CA_INSTALL_PATH}/server.crt" \
|
||||
"${CONFIG_DEB_INSTALL_DEFAULT_CA_INSTALL_PATH}/server.key" \
|
||||
"${cert_crt}" \
|
||||
"${cert_key}" \
|
||||
--ca-url "$ca_url" \
|
||||
--root "$root_crt" \
|
||||
--san "$wildcard_domain" \
|
||||
|
|
@ -691,19 +680,15 @@ do_deb_sys_cert_install(){
|
|||
|
||||
# 1. Définition des chemins
|
||||
# On s'assure de retrouver le fichier même si la variable a sauté
|
||||
temp_root="/tmp/step-config/certs/root_ca.crt"
|
||||
system_target="/usr/local/share/ca-certificates/step-ca-frogg.crt"
|
||||
inter_target="/usr/local/share/ca-certificates/step-ca-intermediate-frogg.crt"
|
||||
|
||||
### --- SECTION INTERMEDIATE --- ###
|
||||
|
||||
# Chemins pour l'intermédiaire
|
||||
server_crt="${CONFIG_DEB_INSTALL_DEFAULT_CA_INSTALL_PATH}/server.crt" # Ton cert généré par step
|
||||
|
||||
if [ -f "$server_crt" ]; then
|
||||
if [ -f "$cert_crt" ]; then
|
||||
# On extrait le DEUXIÈME certificat du fichier (l'intermédiaire)
|
||||
# On utilise awk pour isoler le second bloc -----BEGIN...END-----
|
||||
awk 'split($0,a,"-----END CERTIFICATE-----"){print a[1] "-----END CERTIFICATE-----"}' "$server_crt" | tail -n +2 | awk '/-----BEGIN CERTIFICATE-----/,/-----END CERTIFICATE-----/' > "$inter_target"
|
||||
awk 'split($0,a,"-----END CERTIFICATE-----"){print a[1] "-----END CERTIFICATE-----"}' "$cert_crt" | tail -n +2 | awk '/-----BEGIN CERTIFICATE-----/,/-----END CERTIFICATE-----/' > "$inter_target"
|
||||
|
||||
if [ -s "$inter_target" ]; then
|
||||
msg_success "Certificat intermédiaire extrait avec succès."
|
||||
|
|
@ -713,15 +698,15 @@ do_deb_sys_cert_install(){
|
|||
step ca root "$inter_target" --ca-url "$ca_url" --fingerprint "$ca_fingerprint" --force > /dev/null 2>&1
|
||||
fi
|
||||
else
|
||||
msg_warn "server.crt introuvable, impossible d'extraire l'intermédiaire pour le moment."
|
||||
msg_warn "${cert_crt} introuvable, impossible d'extraire l'intermédiaire pour le moment."
|
||||
fi
|
||||
|
||||
### --- FIN SECTION INTERMEDIATE --- ###
|
||||
|
||||
if [ -f "$temp_root" ]; then
|
||||
if [ -f "$root_crt" ]; then
|
||||
# 2. On nettoie le certificat (format PEM pur) pour éviter l'erreur 'rehash'
|
||||
# Cela extrait uniquement le certificat et ignore le texte inutile
|
||||
openssl x509 -in "$temp_root" -out "$system_target"
|
||||
openssl x509 -in "$root_crt" -out "$system_target"
|
||||
|
||||
# 3. Mise à jour du magasin (sans --fresh pour éviter les warnings inutiles)
|
||||
if update-ca-certificates > /dev/null 2>&1; then
|
||||
|
|
@ -730,27 +715,18 @@ do_deb_sys_cert_install(){
|
|||
msg_error "Échec lors de la mise à jour des certificats système."
|
||||
fi
|
||||
else
|
||||
msg_error "Source introuvable dans $temp_root. Vérifie que l'étape 3 a réussi."
|
||||
msg_error "Source introuvable dans $root_crt. Vérifie que l'étape 3 a réussi."
|
||||
fi
|
||||
|
||||
# ---(Cron & Nettoyage final) ---
|
||||
# C'est seulement MAINTENANT qu'on peut supprimer
|
||||
rm -rf "/tmp/step-config"
|
||||
rm -rf "${step_path}"
|
||||
|
||||
# ==================================================================
|
||||
# [5/7] ATTRIBUTION DES DROITS
|
||||
# ==================================================================
|
||||
msg_warning "[5/7] Finalisation des droits et redémarrage des services..."
|
||||
|
||||
# Fichiers de certificats
|
||||
cert_dir="${CONFIG_DEB_INSTALL_DEFAULT_CA_INSTALL_PATH}"
|
||||
cert_crt="${cert_dir}/server.crt"
|
||||
cert_key="${cert_dir}/server.key"
|
||||
cert_pfx="${cert_dir}/server.pfx"
|
||||
|
||||
# Groupe utilisé pour l'accès aux certificats
|
||||
cert_group="ssl-cert"
|
||||
|
||||
# Création du groupe si nécessaire
|
||||
groupadd -f "$cert_group"
|
||||
|
||||
|
|
@ -769,8 +745,6 @@ do_deb_sys_cert_install(){
|
|||
# Parcours des services configurés pour ajouter l utilisateur au groupe ssl
|
||||
for svc in $CONFIG_DEB_INSTALL_DEFAULT_CA_SERVICES; do
|
||||
|
||||
load_state unit svc_user
|
||||
|
||||
unit="${svc%.service}.service"
|
||||
|
||||
# Vérifie que l'unité existe réellement
|
||||
|
|
|
|||
Loading…
Reference in New Issue