← Retour
#!/bin/bash
# ===========================================
# Vérifie l'expiration des certificats SSL
# Usage: ./check-ssl.sh [domain]
# ===========================================
set -e
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
source "$SCRIPT_DIR/../lib/config.sh"
source "$SCRIPT_DIR/../lib/colors.sh"
DOMAIN="${1:-$DOMAIN_BASE}"
print_header "Vérification SSL - $DOMAIN"
# Liste des domaines à vérifier
DOMAINS_TO_CHECK=(
"$DOMAIN_BASE"
"hellocar-api-prod.$DOMAIN_BASE"
"hellocar-public-prod.$DOMAIN_BASE"
"hellocar-admin-prod.$DOMAIN_BASE"
)
echo ""
printf "%-45s %-15s %-20s\n" "DOMAINE" "JOURS RESTANTS" "EXPIRATION"
print_separator
for domain in "${DOMAINS_TO_CHECK[@]}"; do
# Récupérer la date d'expiration du certificat
EXPIRY=$(echo | openssl s_client -servername "$domain" -connect "$domain:443" 2>/dev/null | \
openssl x509 -noout -enddate 2>/dev/null | cut -d= -f2)
if [ -n "$EXPIRY" ]; then
# Calculer les jours restants
EXPIRY_EPOCH=$(date -d "$EXPIRY" +%s 2>/dev/null || date -j -f "%b %d %T %Y %Z" "$EXPIRY" +%s 2>/dev/null)
NOW_EPOCH=$(date +%s)
DAYS_LEFT=$(( (EXPIRY_EPOCH - NOW_EPOCH) / 86400 ))
EXPIRY_DATE=$(date -d "$EXPIRY" '+%Y-%m-%d' 2>/dev/null || echo "$EXPIRY")
# Colorer selon les jours restants
if [ "$DAYS_LEFT" -lt 7 ]; then
COLOR="${RED}"
STATUS="⚠️ CRITIQUE"
elif [ "$DAYS_LEFT" -lt 30 ]; then
COLOR="${YELLOW}"
STATUS="⚡ À renouveler"
else
COLOR="${GREEN}"
STATUS="✓"
fi
printf "%-45s ${COLOR}%-15s${NC} %-20s\n" "$domain" "$DAYS_LEFT jours" "$EXPIRY_DATE"
else
printf "%-45s ${RED}%-15s${NC} %-20s\n" "$domain" "ERREUR" "Impossible de vérifier"
fi
done
echo ""
# Vérifier aussi le certificat sur le serveur Nginx
log_info "Vérification du certificat local sur Nginx..."
CERT_EXPIRY=$(ssh "$NGINX_USER@$NGINX_HOST" "sudo openssl x509 -enddate -noout -in $SSL_CERT_PATH 2>/dev/null | cut -d= -f2" 2>/dev/null || echo "")
if [ -n "$CERT_EXPIRY" ]; then
log_info "Certificat local expire le: $CERT_EXPIRY"
else
log_warn "Impossible de vérifier le certificat local"
fi