Files
duffyduckandClaude Opus 5 fd76c18eb0 Wildcard-Zertifikate ueber Plesk-DNS und Let's Encrypt
Legt den A/AAAA-Record fuer einen Namen in Plesk an bzw. aktualisiert ihn und
holt anschliessend per DNS-01-Challenge ein Wildcard-Zertifikat von Let's
Encrypt. Alle Bestandteile werden einzeln abgelegt, zusaetzlich als
kombinierte bundle.pem und als passwortgeschuetzte cert.pfx.

- Plesk-Anbindung ueber die XML-API (Zone finden, Records lesen/anlegen/loeschen)
- ACME-Order mit dns-01, Account-Key wird wiederverwendet
- Propagations-Check gegen die autoritativen Nameserver der Zone, bricht vor
  der Validierung ab statt einen Fehlversuch bei Let's Encrypt zu verbrennen
- Renewal-Check: laeuft idempotent, taugt so direkt fuer den Cron
- Docker-Container, Konfiguration ueber .env, Ausgabe im Projektverzeichnis
- Tests ohne echten Plesk-Server bzw. ohne Zertifikatsausstellung

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-13 09:41:26 +02:00

61 lines
2.2 KiB
Bash

# ---------------------------------------------------------------------------
# Docker: UID/GID, damit die erzeugten Dateien dir gehoeren (id -u / id -g)
# ---------------------------------------------------------------------------
PUID=1000
PGID=1000
# ---------------------------------------------------------------------------
# Plesk Server
# ---------------------------------------------------------------------------
PLESK_HOST=plesk.example.com
PLESK_PORT=8443
# Authentifizierung: entweder API-Key (empfohlen) ODER Login/Passwort.
# API-Key erzeugen (auf dem Plesk-Server):
# plesk bin secret_key --create -ip-address <IP-des-Docker-Hosts>
PLESK_API_KEY=
PLESK_USER=admin
PLESK_PASSWORD=
# TLS-Zertifikat des Plesk-Panels pruefen (bei self-signed auf false setzen)
PLESK_VERIFY_TLS=false
PLESK_TIMEOUT=60
# ---------------------------------------------------------------------------
# ACME / Let's Encrypt
# ---------------------------------------------------------------------------
ACME_EMAIL=admin@example.com
ACME_DIRECTORY_URL=https://acme-v02.api.letsencrypt.org/directory
# true => Staging-Umgebung von Let's Encrypt (zum Testen, keine Rate-Limits)
ACME_STAGING=false
ACME_ACCOUNT_DIR=/app/data
# ---------------------------------------------------------------------------
# Zertifikat
# ---------------------------------------------------------------------------
# Passwort fuer die .pfx-Datei und den verschluesselten Private Key
CERT_PASSWORD=bitte-aendern
CERT_OUTPUT_DIR=/app/certs
# rsa oder ec
KEY_TYPE=rsa
RSA_KEY_SIZE=4096
EC_CURVE=secp256r1
# PFX im Legacy-Format (SHA1/3DES) erzeugen - noetig fuer aeltere
# Windows-/Java-Importer. false = modern (AES-256).
PFX_LEGACY_COMPAT=false
# Erneuerung erst, wenn das vorhandene Zertifikat weniger Tage gueltig ist
RENEW_DAYS_BEFORE_EXPIRY=30
# ---------------------------------------------------------------------------
# DNS
# ---------------------------------------------------------------------------
DNS_TTL=300
# Wartezeit auf DNS-Propagation der _acme-challenge TXT-Records (Sekunden)
DNS_PROPAGATION_TIMEOUT=600
DNS_PROPAGATION_INTERVAL=15
# Zusaetzliche Resolver fuer den Propagations-Check (Komma-separiert)
DNS_RESOLVERS=1.1.1.1,8.8.8.8