HTTPS avec Traefik

Traefik s’interfacer avec Let’s Encrypt, il génère automatiquement tous vos certificats SSL et les renouvelle automatiquement.


2 min read

Let’s Encrypt est une autorité de certification permettant d'émettre des certificats SSL gratuits pour un nom de domaine. Ces derniers peuvent être générés automatiquement. Pour ce faire, il faut pouvoir prouver que le nom de domaine nous appartienne. Traefik étant capable de s’interfacer avec Let’s Encrypt, il est possible de générer automatiquement tous vos certificats SSL (et ceci gratuitement !).

La gestion de ces derniers est également grandement simplifiée puisque Traefik les renouvelles automatiquement.

Certificat SSL Let's Encrypt

version: "3"
services:
  traefik:
    image: "traefik:v2.2"
    command:
      - --entrypoints.web.address=:80
      - --entrypoints.web-secure.address=:443
      - --providers.docker=true
      - [email protected]
      - --certificatesresolvers.le.acme.storage=/acme.json
      - --certificatesresolvers.le.acme.tlschallenge=true
    ports:
      - "80:80"
      - "443:443"
    volumes:
      - "/var/run/docker.sock:/var/run/docker.sock:ro"
      - "./docker/traefik/acme.json:/acme.json"

  my-app:
    image: containous/whoami:v1.3.0
    labels:
      - "traefik.http.routers.my-app.rule=Host(`example.com`)"
      - "traefik.http.routers.my-app.tls=true"
      - "traefik.http.routers.my-app.tls.certresolver=le"

Cette configuration indique à Traefik de router les requêtes http et https de example.com vers le conteneur my-app.
Le certificat est généré et renouvelé automatiquement avec Let's Encrypt.

Let's Encrypt prévoit plusieurs limites. Pour effectuer les tests il est conseillé d'utiliser la version staging de Let's Encrypt en ajoutant cette commande : - --certificatesresolvers.le.acme.caserver=https://acme-staging-v02.api.letsencrypt.org/directory

Redirection automatique vers HTTPS

version: "3"
services:
  traefik:
    image: "traefik:v2.2"
    command:
      - --entrypoints.web.address=:80
      - --entrypoints.web-secure.address=:443
      - --providers.docker=true
      - [email protected]
      - --certificatesresolvers.le.acme.storage=/acme.json
      - --certificatesresolvers.le.acme.tlschallenge=true
    ports:
      - "80:80"
      - "443:443"
    volumes:
      - "/var/run/docker.sock:/var/run/docker.sock:ro"
      - "./docker/traefik/acme.json:/acme.json"
    labels:
      - "traefik.enable=true"
      - "traefik.http.routers.https-redirect.entryPoints=web"
      - "traefik.http.routers.https-redirect.rule=HostRegexp(`{any:.*}`)"
      - "traefik.http.routers.https-redirect.middlewares=https-redirect"
      - "traefik.http.middlewares.https-redirect.redirectscheme.scheme=https"

  my-app:
    image: containous/whoami:v1.3.0
    labels:
      - "traefik.http.routers.my-app.rule=Host(`example.com`)"
      - "traefik.http.routers.my-app.tls=true"
      - "traefik.http.routers.my-app.tls.certresolver=le"

Cette configuration redirige TOUT le traffic entrant sur Traefik en http vers son équivalent https.
Il est possible d'exporter ce middleware dans la configuration du container my-app.


Présentation de Traefik
Previous article

Présentation de Traefik

Traefik répond aux problématiques d’Edge Routing présentes en production. Jouant parfaitement le rôle de Reverse Proxy et Load Balancer il facilitera le déploiement de vos applications web.

Sylius avec Docker (seulement)
Next article

Sylius avec Docker (seulement)

Sylius fournit par défaut une suite de fichiers docker-compose destinés au développement et à la production.


Related Articles

Présentation de Traefik
3 min read
Monitoring AWS avec CloudWatch
2 min read
Docker stack serveur web
2 min read
Une interface graphique pour Docker
1 min read
Débuter avec Docker
2 min read
Installer GitLab avec Docker
1 min read

GO TOP

🎉 You've successfully subscribed to FrenchCode!
OK