Letsencrypt 5 duplicate certs a week
Hallo Zusammen,
ich habe Traefik/Letsencrpyt für meinen nextclouddocker container installiert. Ich habe natürlich bis alles lief einige mal redeployed. Dabei habe ich dann immer die container gelöscht und neu angelegt - ich denke in diesem Schritt habe ich natürlich auch immer wieder die certs die erstellt worden sind neu requestet und daher die max Anzahl pro Woche erreicht.
Was mussich machen wenn ich das umgehen will? Wo liegen die Certs und was muss ich tun bevor ich einen container lösche? ODer reicht es wenn ich im Traefik die acme.json speichere und nach dem neu erstellen einfach wieder mit der vorherigen version ersetze?
ich habe Traefik/Letsencrpyt für meinen nextclouddocker container installiert. Ich habe natürlich bis alles lief einige mal redeployed. Dabei habe ich dann immer die container gelöscht und neu angelegt - ich denke in diesem Schritt habe ich natürlich auch immer wieder die certs die erstellt worden sind neu requestet und daher die max Anzahl pro Woche erreicht.
Was mussich machen wenn ich das umgehen will? Wo liegen die Certs und was muss ich tun bevor ich einen container lösche? ODer reicht es wenn ich im Traefik die acme.json speichere und nach dem neu erstellen einfach wieder mit der vorherigen version ersetze?
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 3101590312
Url: https://administrator.de/contentid/3101590312
Ausgedruckt am: 22.11.2024 um 10:11 Uhr
12 Kommentare
Neuester Kommentar
Servus.
Was mussich machen wenn ich das umgehen will?
Entweder warten, andere Domain nehmen, oder die erstellten Zertifikate aus dem Container fischen ( meine aus dem Kopf hier /etc/ssl/private)
Grüße Uwe
Zitat von @winlin:
ich denke in diesem Schritt habe ich natürlich auch immer wieder die certs die erstellt worden sind neu requestet und daher die max Anzahl pro Woche erreicht.
Joa, nicht umsonst macht man Experimente mit Let's Encrypt nur im Staging Environment!!ich denke in diesem Schritt habe ich natürlich auch immer wieder die certs die erstellt worden sind neu requestet und daher die max Anzahl pro Woche erreicht.
Was mussich machen wenn ich das umgehen will?
Wo liegen die Certs und was muss ich tun bevor ich einen container lösche?
Wozu löschen? Einmal richtig machen dann erübrigt sich dauerndes Löschen!Grüße Uwe
In Ruhe lesen und nicht immer gleich aufgeben und Posts schreiben bringt einen am Ende selbst weiter und man lernt davon auch nochwas ...
https://doc.traefik.io/traefik/v1.7/configuration/acme/
storage¶
Required, Default="acme.json"
The storage option sets the location where your ACME certificates are saved to.
File (YAML)
certificatesResolvers:
myresolver:
acme:
# ...
storage: acme.json
# ...
File (TOML)
CLI
ACME certificates are stored in a JSON file that needs to have a 600 file mode.
In Docker you can mount either the JSON file, or the folder containing it:
Und das mit dem staging wusste ich nicht wo definiere ich die Staging url: https://acme-staging-v02.api.letsencrypt.org/directory
https://doc.traefik.io/traefik/v1.7/configuration/acme/
# CA server to use.
# Uncomment the line to use Let's Encrypt's staging server,
# leave commented to go to prod.
#
# Optional
# Default: "https://acme-v02.api.letsencrypt.org/directory"
#
# caServer = "https://acme-staging-v02.api.letsencrypt.org/directory"
Zitat von @winlin:
Und das mit der acme.json is dann auch logisch den Pfad wo die liegt einfach außerhalb des Containers ablegen und als zusätzlichen volume mountpoint nehmen. So wird beim redeploy nix neu requester sondern es wird die alte acme genutzt mit den vorhandenen certs
Rischtisch.Und das mit der acme.json is dann auch logisch den Pfad wo die liegt einfach außerhalb des Containers ablegen und als zusätzlichen volume mountpoint nehmen. So wird beim redeploy nix neu requester sondern es wird die alte acme genutzt mit den vorhandenen certs
Und wenn man das Zertifikat/Key mal als Zertifikats-Datei braucht, das lässt sich aus dem Inhalt der json leicht konvertieren, die sind nur base64 kodiert in der json hinterlegt.
jq -r "..Certificates.certificate" ./letsencrypt/acme.json | base64 -d | openssl x509 -out cert.pem
jq -r "..Certificates.key" ./letsencrypt/acme.json | base64 -d | openssl pkey -out key.pem
Zitat von @winlin:
Weißt du eigentlich auch wie ich ein eigenes pem und key file einbinde das ich von NoIP.com habe???
Jepp, mounte dein Volume und gebe den Pfad in der yml an https://doc.traefik.io/traefik/https/tls/Weißt du eigentlich auch wie ich ein eigenes pem und key file einbinde das ich von NoIP.com habe???
docker-compose Inhalte dafür
commands:
- "--providers.file.filename=/mycerts/certs.yml"
volumes:
- "./mycerts:/mycerts"
Und das "certs.yml" sieht dann so aus
tls:
certificates:
- certFile: "/mycerts/cert.pem"
keyFile: "/mycerts/key.pem"
stores:
- default
stores:
default: {}
Müsste ich dann in meiner docker compose file für nextcloud den ganzen traefik config löschen?
Hmpf .... Überleg doch einfach mal. TREAFIK spielt den Reverse-Proxy für deine Container, ist also für die Zertifikate dieser zuständig, wenn du nun die Config aus dem Container nimmst weiß der Treafik-Router ja nicht mehr an welchen Container er die Anfragen weiterleiten soll!Die obige Config gilt für "Traefik" und nur dafür!
Ohne Traefik, also ohne Reverse-Proxy musst du dem Nextcloud Container selbst das Zertifikat verimpfen und dieser ist dann auch direkt die erste Instanz nach extern.
Es gilt also wie immer als erstes das Konzept dahinter zu verstehen und dann darauf aufzubauen. Mit Trial &Error erleidet du da sonst zu 99% Schiffbruch.
Werde dir also erst mal klar darüber was du eigentlich willst.
daher mein post und die Fragen
Nur leider passt die hier gar nicht mehr zur Frage des Posts, hier ging es um die Einbindung von Let's Encrypt ...Das statische Einbinden von Zertifikaten hatte ich ja oben beschrieben, hier ein simples Beispiel des Docker-Files für ein traefik reverse-proxy und als Demo ein "traefik/whoami" als container , die certs.yml hatte ich ja oben schon beschrieben.
version: '3'
services:
reverse-proxy:
image: traefik:latest
command:
- "--api.insecure=true"
- "--providers.docker"
- "--entrypoints.websecure.address=:443"
- "--entrypoints.websecure.http.tls.domains=my.domain.tld"
- "--providers.file.filename=/certificates/certs.yml"
ports:
- "80:80"
- "443:443"
- "8080:8080"
volumes:
- /var/run/docker.sock:/var/run/docker.sock
- ./certs:/certificates
whoami:
image: traefik/whoami
labels:
- "traefik.enable=true"
- "traefik.http.routers.whoami.rule=Host(`my.domain.tld`)"
- "traefik.http.routers.whoami.entrypoints=websecure"