TASIOMIND.DEV — OPERATIONAL▸▸▸FULL STACK DEVELOPER @ GWQ SERVICEPLUS AG▸▸▸FOUNDER — K8SGPT.AI▸▸▸OPEN SOURCE: ACTIVE▸▸▸DISTRIBUTED SYSTEMS / KUBERNETES / AI▸▸▸RUST + GO + PYTHON▸▸▸FIELD TESTED / STATUS — NOMINAL▸▸▸LOCATION: EUROPE/BERLIN▸▸▸TASIOMIND.DEV — OPERATIONAL▸▸▸FULL STACK DEVELOPER @ GWQ SERVICEPLUS AG▸▸▸FOUNDER — K8SGPT.AI▸▸▸OPEN SOURCE: ACTIVE▸▸▸DISTRIBUTED SYSTEMS / KUBERNETES / AI▸▸▸RUST + GO + PYTHON▸▸▸FIELD TESTED / STATUS — NOMINAL▸▸▸LOCATION: EUROPE/BERLIN▸▸▸

Setup free Wildcard SSL and automatic renewal

January 29, 2020

Ziel

Wildcard SSL Zertifikat via Let's Encrypt und automatische Erneuerung mit Route 53 DNS API (acme.sh).

TL;DR

code
sudo wget -O - https://get.acme.sh | sh

export AWS_ACCESS_KEY_ID="XXXX"
export AWS_SECRET_ACCESS_KEY="XXXX"

acme.sh --issue --dns dns_aws -d "example.com" -d "*.example.com"

Warum DNS API?

Wildcard Zertifikate brauchen DNS-01 Challenges. Die DNS API sorgt dafuer, dass TXT Records automatisch gesetzt werden, auch fuer Renewal.

Ablauf (Schritt fuer Schritt)

  1. acme.sh installieren
  2. AWS IAM User fuer Route 53 anlegen
  3. AWS Keys als ENV setzen
  4. Zertifikat per DNS API ausstellen

Beispiel Skript:

code
MAIN_DOMAIN="example.com"
WILDCARD_DOMAIN="*.example.com"
ACCOUNT_EMAIL="webmaster@example.com"
AWS_ACCESS_KEY_ID="XXXX"
AWS_SECRET_ACCESS_KEY="XXXX"

sudo apt-get update -qq
sudo apt-get install -qq socat
sudo wget -O - https://get.acme.sh | sh

acme.sh --upgrade --auto-upgrade

export AWS_ACCESS_KEY_ID="${AWS_ACCESS_KEY_ID}"
export AWS_SECRET_ACCESS_KEY="${AWS_SECRET_ACCESS_KEY}"
export ACCOUNT_EMAIL="${ACCOUNT_EMAIL}"

acme.sh --issue --dns dns_aws -d "${MAIN_DOMAIN}" -d "${WILDCARD_DOMAIN}"

Wo liegen die Zertifikate?

Nach Erfolg findest du die Dateien meist unter:

code
~/.acme.sh/example.com/

Wenn du sie kopieren willst:

code
tar -czvf example.com.tar.gz ~/.acme.sh/example.com/

Renewal

acme.sh erneuert automatisch (ca. alle 60 Tage). Update/Auto-Upgrade:

code
acme.sh --upgrade
acme.sh --upgrade --auto-upgrade
acme.sh --upgrade --auto-upgrade 0

Troubleshooting

Wenn acme.sh nicht gefunden wird:

code
source ~/.bashrc

Links