From e0b4325dc75c35e65bc4c54fc2d1bbc03bc4b704 Mon Sep 17 00:00:00 2001 From: smolkik_adm Date: Mon, 11 May 2026 03:42:06 +0000 Subject: [PATCH] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=B8=D1=82?= =?UTF-8?q?=D1=8C=20extract.sh?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- extract.sh | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) create mode 100644 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