Aller au contenu principal

HTTPS

Tout le trafic passe par Traefik (pch_traefik, ports 80 et 443), qui termine le TLS et route vers les conteneurs. Aucun certificat n'est géré à la main.

Certificats​

  • Fournis par Let's Encrypt (défi HTTP sur le port 80), demandés automatiquement pour chaque nom déclaré dans les étiquettes Traefik des conteneurs.
  • Renouvelés automatiquement par Traefik ; stockés dans le volume traefik_letsencrypt (acme.json).
  • Le port 80 redirige vers 443 pour tous les noms.

Ajouter un nom d'hôte : créer l'enregistrement DNS d'abord, puis ajouter la règle Host(...) dans les étiquettes du conteneur concerné et le recréer. Si Traefik a tenté la demande avant que le DNS existe, il sert son « TRAEFIK DEFAULT CERT » : docker restart pch_traefik relance la demande.

remarque

L'adresse de contact déclarée à Let's Encrypt (option acme.email dans le compose) est celle du responsable technique actuel ; à remplacer par une adresse de l'UCP-PCH lors du passage de relais.

Noms servis​

ServeurNomVers
Productionbemba.ucp-pch.org, ucp-pch.orgapplication (/api, /photos → backend)
Productionmariacare.ucp-pch.org, sig.ucp-pch.orgredirection vers bemba.ucp-pch.org
Productiondocubemba.ucp-pch.orgdocumentation
Préproductionsig-preprod.ucp-pch.orgapplication
Préproductionkf/kc/ee.kobo.ucp-pch.orgKoboToolbox (Traefik → nginx de Kobo)
Préproductiongitlab.ucp-pch.orgGitLab

En-têtes de sécurité​

Posés par Nginx du frontend (nginx/frontend.conf) :

En-têteValeur
Strict-Transport-Securityun an, sous-domaines inclus
Content-Security-Policydefault-src 'self', scripts du domaine seulement, connect-src limité au domaine, à KoboToolbox et à Sentry
X-Frame-OptionsSAMEORIGIN
X-Content-Type-Optionsnosniff
Referrer-Policystrict-origin-when-cross-origin

Les versions de Nginx et de PHP ne sont pas annoncées (server_tokens off, expose_php Off).

Vérifier​

curl -sI https://bemba.ucp-pch.org/ | grep -iE "strict-transport|content-security|x-frame"
curl -sv https://bemba.ucp-pch.org/ -o /dev/null 2>&1 | grep -E "issuer|expire date"

Test externe : SSL Labs (https://www.ssllabs.com/ssltest/).

Contenu mixte​

L'application est servie uniquement en HTTPS et appelle l'API par un chemin relatif (/api) : aucun appel en HTTP clair n'est possible depuis le navigateur. Un service tiers en http:// serait de toute façon bloqué par la CSP.