Let's Encrypt permet a tout un chacun d’obtenir des certificats fiables gratuitement et le renouvellement peut se faire de plusieurs façon, les deux plus utilisées étant via HTTP et DNS. Jusqu’à présent j’utilisais la méthode HTTP mais elle nécessite l'ouverture d'un port et ne permet pas de tout faire on va donc voir comment passer à DNS-01.

L'idée derrière DNS-01 c'est que Traefik va se connecter a la zone DNS du domaine pour vérifier qu'on contrôle bien le domaine en créant des enregistrements TXT. Le truc cool c'est que Traefik utilise LEGO comme interface avec Let'sEncrypt et que l'API d'Infomaniak est supportée. Donc voyons comment configurer tout ça.

D'abord il faut se rendre dans son manager --> Mon Profil --> Développeur --> Tokens API et créer un nouveau token dédié avec les permissions dns:read et dns:write. On déclare ce token dans le docker compose de Traefik:

environment:
    - INFOMANIAK_ACCESS_TOKEN=xxxxx

Ensuite on peut modifier son traefik_config.yml:

  certificatesResolvers:
    letsencrypt:
      acme:
        caServer: https://acme-v02.api.letsencrypt.org/directory
        email: xxx@xxx
        dnsChallenge:
          provider: infomaniak
        storage: /letsencrypt/acme.json

Là c'est Infomaniak mais si vous utilisez un autre fournisseur la liste est la.

Normalement si on est sur une install par défaut de Pangolin pas besoin de modifier le routeur mais au cas ou bien vérifier que le resolver est le bon:

 entryPoints:
    websecure:
      http:
        tls:
          certResolver: letsencrypt

et c'est terminé, petit restart du conteneur Traefik pas nécessaire normalement mais on sait jamais. Normalement les certificats se renouvelleront tout seuls via le challenge DNS-01.