Set-OPS-Public/wiki/Reverse-proxy-et-TLS.md
Daniel Allaire 2450c9ea65 observatoire : un seul nom pour la console, des deux cotes
grafana.chezlepro.internal et tableaux.genese.internal nommaient le meme
service de deux facons. Les deux deviennent observatoire.

Un nom de produit dans une URL se grave aussi dans les SAN du certificat et
dans les URI de redirection du SSO : remplacer Grafana obligerait alors a
renommer le service. Le nom dit desormais la fonction.

Le renommage a revele que les URI des clients Keycloak repetent a la main les
FQDN declares dans expose:. Rien ne les reliait. P66 garde ce lien, ecrite en
meme temps que le premier renommage.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Crgis8CxCWkAGFA1ecBz3q
2026-09-10 20:21:13 -04:00

3 KiB

Reverse-proxy & TLS

Unité d'apprentissage. Moule : ① concept → ② Set-OPS → ③ transférable → ④ à toi de jouer.


① Le concept (générique)

Un reverse-proxy est un point d'entrée unique devant plusieurs services. Il :

  • route par nom (grafana.… → tel backend, forge.… → tel autre) — via l'en-tête Host / SNI ;
  • termine le TLS : il porte les certificats, parle HTTPS au client et (souvent) HTTP en interne ;
  • centralise journaux, limites de débit, en-têtes de sécurité (et un WAF éventuel).

Terminaison TLS = le chiffrement s'arrête au proxy ; derrière, le réseau interne est de confiance. Un seul endroit gère les certificats → simple et cohérent.


② Comment Set-OPS le fait

serveur_nginx déployé sur l'edge (infra-edge) est le reverse-proxy. Le point élégant : l'exposition est auto-dérivée. Déclarer expose: [icinga.chezlepro.internal] sur une app génère tout :

expose ──> vhost nginx (route par nom)
      ──> SAN ajouté au certificat de l'edge (step-ca)
      ──> enregistrement A dans PowerDNS
      ──> alias plancher /etc/hosts

Le client parle HTTPS vérifié à l'edge ; l'edge relaie en HTTP au backend interne (Grafana, Forgejo, Keycloak…). Une seule ligne déclarative, toute la chaîne câblée. C'est une liaison (app → domaine) — voir l'unité Liaisons.


③ Pourquoi c'est transférable

Set-OPS Équivalents ailleurs
nginx reverse-proxy HAProxy · Traefik · Caddy · Apache · Envoy
edge + terminaison TLS tout load-balancer / ingress cloud, un NetScaler ADC
routage par SNI/Host mécanisme standard de tout proxy HTTP

Tu as appris le reverse-proxy, le routage par nom, la terminaison TLS — pas « nginx ».


④ À toi de jouer

  1. Route par nom. Deux noms, un seul edge (10.17.16.11) :
    curl -sI --resolve observatoire.chezlepro.internal:443:10.17.16.11 \
      --cacert /etc/step/certs/root_ca.crt https://observatoire.chezlepro.internal/ | head -1
    
    Change grafana en forge : même IP, backend différent. C'est le routage par SNI.
  2. Vois la terminaison TLS. Le certificat présenté est celui de l'edge (avec les SAN des exposés) : openssl s_client -connect 10.17.16.11:443 -servername observatoire.chezlepro.internal | openssl x509 -noout -text | grep -A1 'Subject Alternative'.
  3. Casse & répare. Arrête le backend (ex. systemctl stop grafana-server sur obs-01) et rouvre Grafana : l'edge répond 502 Bad Gateway (le proxy est là, le service non). Redémarre : ça remarche. Tu distingues le proxy de ce qu'il sert.

Pour aller plus loin (dépôt)

  • Rôle : roles/serveur_nginx ; les sites se déclarent côté nginx (serveur_nginx_sites).
  • Machinerie d'exposition : expositions_des_applications (dérive vhost + SAN + A + plancher).
  • Frontière publique (au-delà de l'edge interne) : docs/ + Étape B (OPNsense).