34 lines
1.2 KiB
Bash
34 lines
1.2 KiB
Bash
#!/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 |