{{tag>sysadmin netadmin docker traefik letsencrypt}} ====== Traefik: configuration de let's encrypt ====== Traefik peut gérer les certificats Let's Encrypt au profit des services placés derrière le reverse-proxy. ===== Configuration statique ===== Pour les tests la configuration statique peut déclarer le résolveur comme suit (avec une autorité de certification "staging"): certificatesResolvers: resolver-letsencrypt-testing: acme: caServer: https://acme-staging-v02.api.letsencrypt.org/directory email: contact@example.com storage: /etc/traefik/acme/cert_testing_storage.json httpChallenge: entryPoint: HTTP Pour la production, utiliser le paramétrage suivant pour le résolveur certificatesResolvers: resolver-letsencrypt: acme: caServer: https://acme-v02.api.letsencrypt.org/directory email: contact@fqdn. storage: /etc/traefik/acme/cert_storage.json httpChallenge: entryPoint: HTTP ===== docker-compose ===== Le fichier de configuration statique définit un fichier de stockage au format JSON (dans mon cas ''/etc/traefik/acme/cert_storage.json''). Pour pouvoir conserver son contenu on crée un point de montage dans la déclaration du service au sein du docker-compose version: "3.3" services: traefik: image: traefik:v2.4.12 restart: unless-stopped ... volumes: # Traefik écoute l'orchestrateur local Docker via le mapping suivant - type: bind source: /var/run/docker.sock target: /var/run/docker.sock read_only: true # Fichier de configuration statique en lecture seule - type: bind source: $PWD/traefik/conf/traefik.yml target: /etc/traefik/traefik.yml read_only: true # fichier de stockage des certificats letsencrypt # NB: doit appartenir a root avec les droits acces 600 - type: bind source: $PWD/traefik/certs/letsencrypt target: /etc/traefik/acme ... Les fichiers de stockage des certificats doivent appartenir à root et avoir les droits positionnés à 0600. $ mkdir -p traefik/certs/letsencrypt $ cd traefik/certs/letsencrypt $ touch cert_testing_storage.json cert_storage.json $ chmod 600 cert_* $ sudo chown root:root cert_* Via les labels, on peut enfin paramétrer le service derrière traefik pour qu'il puisse bénéficier du résolveur ici nommé "resolver-letsencrypt" version: "3.3" services: traefik: ... whoami-secure: image: containous/whoami depends_on: - traefik labels: - "traefik.enable=true" - "traefik.http.routers.whoami_insecure.entryPoints=HTTP" - "traefik.http.routers.whoami_insecure.rule=Host(`whoami.fqdn`)" - "traefik.http.middlewares.https-redirect.redirectscheme.scheme=https" - "traefik.http.middlewares.https-redirect.redirectscheme.permanent=true" - "traefik.http.routers.whoami_insecure.middlewares=https-redirect@docker" - "traefik.http.routers.whoami_secure.entrypoints=HTTPS" - "traefik.http.routers.whoami_secure.rule=Host(`whoami.fqdn`)" - "traefik.http.routers.whoami_secure.tls=true" - "traefik.http.routers.whoami_secure.tls.certresolver=resolver-letsencrypt" ... ===== Références ===== * https://doc.traefik.io/traefik/v2.4/https/acme/ * https://doc.traefik.io/traefik/v2.4/https/acme/#caserver