33800 Docs

← Retour
#!/bin/bash # =========================================== # Renouvellement wildcard SSL - Mode Manuel # Usage: ./renew-wildcard-manual.sh [subdomain] # Exemple: ./renew-wildcard-manual.sh 33800 # =========================================== # Ce script guide l'utilisateur pour créer # manuellement le TXT DNS sur o2switch set -e SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" source "$SCRIPT_DIR/../../lib/config.sh" source "$SCRIPT_DIR/../../lib/colors.sh" SUBDOMAIN="${1:-33800}" WILDCARD_DOMAIN="*.$SUBDOMAIN.$O2SWITCH_DOMAIN" BASE_DOMAIN="$SUBDOMAIN.$O2SWITCH_DOMAIN" print_header "Renouvellement Wildcard SSL (Mode Manuel)" echo "" log_info "Domaines à renouveler:" echo " - $WILDCARD_DOMAIN" echo " - $BASE_DOMAIN" echo "" # Vérifier le certificat actuel sur nginx log_step "Vérification du certificat actuel..." CERT_PATH="/etc/letsencrypt/live/$BASE_DOMAIN/cert.pem" if ssh "$NGINX_USER@$NGINX_HOST" "test -f $CERT_PATH" 2>/dev/null; then EXPIRY=$(ssh "$NGINX_USER@$NGINX_HOST" "openssl x509 -enddate -noout -in $CERT_PATH 2>/dev/null | cut -d= -f2") EXPIRY_DATE=$(date -d "$EXPIRY" '+%d/%m/%Y' 2>/dev/null || echo "inconnu") EXPIRY_EPOCH=$(date -d "$EXPIRY" +%s 2>/dev/null || echo 0) NOW_EPOCH=$(date +%s) DAYS_LEFT=$(( (EXPIRY_EPOCH - NOW_EPOCH) / 86400 )) if [ "$DAYS_LEFT" -gt 0 ]; then log_info "Expiration: $EXPIRY_DATE ($DAYS_LEFT jours restants)" else log_error "Certificat EXPIRÉ depuis $((-DAYS_LEFT)) jours!" fi else log_warn "Aucun certificat existant trouvé" fi echo "" print_separator echo "" log_step "Lancement de certbot en mode manuel..." echo "" log_warn "Tu vas devoir créer un enregistrement TXT manuellement sur o2switch" echo "" # Instructions cat << 'INSTRUCTIONS' ┌─────────────────────────────────────────────────────────────────┐ │ ÉTAPES À SUIVRE : │ │ │ │ 1. Certbot va afficher une valeur de challenge │ │ │ │ 2. Va sur https://yellow.o2switch.net:2083 │ │ → Zone Editor → Manage → Add Record │ │ │ │ 3. Crée un enregistrement TXT : │ │ Nom: _acme-challenge.33800 │ │ Type: TXT │ │ Valeur: [la valeur affichée par certbot] │ │ TTL: 60 │ │ │ │ 4. Attends ~1 minute pour la propagation DNS │ │ │ │ 5. Appuie sur Entrée dans certbot │ │ │ │ 6. IMPORTANT: Supprime le TXT après validation! │ └─────────────────────────────────────────────────────────────────┘ INSTRUCTIONS echo "" read -p "Appuie sur Entrée pour lancer certbot..." echo "" log_step "Connexion à nginx et lancement de certbot..." echo "" # Lancer certbot sur nginx en mode interactif ssh -t "$NGINX_USER@$NGINX_HOST" "sudo certbot certonly \ --manual \ --preferred-challenges dns \ --agree-tos \ --no-eff-email \ --email admin@$O2SWITCH_DOMAIN \ -d '$WILDCARD_DOMAIN' \ -d '$BASE_DOMAIN'" RESULT=$? echo "" if [ $RESULT -eq 0 ]; then log_success "Certificat renouvelé avec succès!" # Afficher nouvelle expiration NEW_EXPIRY=$(ssh "$NGINX_USER@$NGINX_HOST" "openssl x509 -enddate -noout -in $CERT_PATH 2>/dev/null | cut -d= -f2") NEW_DATE=$(date -d "$NEW_EXPIRY" '+%d/%m/%Y' 2>/dev/null || echo "$NEW_EXPIRY") log_info "Nouvelle expiration: $NEW_DATE" # Recharger nginx log_step "Rechargement de nginx..." ssh "$NGINX_USER@$NGINX_HOST" "sudo systemctl reload nginx" log_success "Nginx rechargé" echo "" print_separator echo "" log_warn "N'oublie pas de SUPPRIMER l'enregistrement TXT sur o2switch!" echo " → Zone Editor → cherche _acme-challenge.33800 → Delete" echo "" else log_error "Échec du renouvellement (code: $RESULT)" echo "" log_info "Vérifie que:" echo " - Le TXT a bien été créé sur o2switch" echo " - Le TTL est court (60 secondes)" echo " - Tu as attendu assez pour la propagation DNS" echo "" log_info "Pour vérifier le TXT: dig TXT _acme-challenge.$SUBDOMAIN.$O2SWITCH_DOMAIN" fi