commit e0b4325dc75c35e65bc4c54fc2d1bbc03bc4b704 Author: smolkik_adm Date: Mon May 11 03:42:06 2026 +0000 Добавить extract.sh diff --git a/extract.sh b/extract.sh new file mode 100644 index 0000000..625fdfb --- /dev/null +++ b/extract.sh @@ -0,0 +1,34 @@ +#!/bin/bash + +ACME="acme.json" +DOMAIN="foto.smolkik.ru" +OUT="/opt/certs/$DOMAIN" + +mkdir -p "$OUT" + +# Извлекаем JSON-объект сертификата для нужного домена +CERT_JSON=$(jq -r --arg DOMAIN "$DOMAIN" ' + .letsencrypt.Certificates[] + | select(.domain.main == $DOMAIN) +' "$ACME") + +if [ -z "$CERT_JSON" ]; then + echo "Ошибка: сертификат для домена $DOMAIN не найден в $ACME" + exit 1 +fi + +# Извлекаем fullchain (сертификат + промежуточные) +echo "$CERT_JSON" | jq -r '.certificate' | base64 -d > "$OUT/fullchain.pem" + +# Извлекаем приватный ключ +echo "$CERT_JSON" | jq -r '.key' | base64 -d > "$OUT/privkey.pem" + +# Извлекаем ТОЛЬКО сертификат домена (без цепочки) +# Для этого нужно из fullchain.pem взять первый сертификат +awk 'BEGIN {n=0} /-----BEGIN CERTIFICATE-----/ {n++} n==1 {print} /-----END CERTIFICATE-----/ && n==1 {exit}' "$OUT/fullchain.pem" > "$OUT/cert.pem" + +chmod 600 "$OUT/privkey.pem" +chmod 644 "$OUT/cert.pem" "$OUT/fullchain.pem" + +echo "Сертификаты сохранены в $OUT:" +ls -la "$OUT"/*.pem \ No newline at end of file