Configurer TLS
Configurer certificat, port 443 et protocoles autorisés.
Dans ce chapitre : 4 étapes et 16 preuves de validation.
Étape 82 — Comprendre ce que TLS protège
Section intitulée « Étape 82 — Comprendre ce que TLS protège »Objectif. Tu distingueras le port, le protocole et le certificat.
État du projet avant cette étape. L’image NGINX existe, mais sa configuration est vide et aucun service NGINX n’est encore dans Compose.
Comprendre le changement
Section intitulée « Comprendre le changement »Le port 443 est l’adresse d’entrée. TLS chiffre la connexion. Le certificat permet au serveur de présenter une identité. Ce sont trois notions différentes.
Faire une seule chose
Section intitulée « Faire une seule chose »Avant de configurer NGINX, reformule le trajet : le navigateur ouvre 443, négocie TLS, puis envoie une requête HTTP à l’intérieur du tunnel chiffré.
Prouver que c’est correct
Section intitulée « Prouver que c’est correct »Question de soutenance — Un certificat autosigné chiffre-t-il ?
Oui. Il chiffre la connexion, mais le navigateur ne lui fait pas confiance automatiquement.
Étape 83 — Écrire la configuration HTTPS
Section intitulée « Étape 83 — Écrire la configuration HTTPS »Objectif. Tu configureras le seul point d’entrée de la stack.
État du projet avant cette étape. Le certificat sera généré par l’entrypoint. NGINX doit maintenant savoir où l’écouter et quoi servir.
Comprendre le changement
Section intitulée « Comprendre le changement »Le bloc server écoute 443 avec TLS, utilise le certificat, sert /var/www/html et transmet les fichiers PHP à wordpress:9000 par FastCGI.
Faire une seule chose
Section intitulée « Faire une seule chose »Écris nginx.conf. Lis chaque directive et relie-la au trajet réseau avant de continuer.
Fichiers ou emplacements concernés
srcs/requirements/nginx/conf/nginx.conf
server {
listen 443 ssl;
listen [::]:443 ssl;
server_name _;
ssl_certificate /etc/nginx/tls/inception.crt;
ssl_certificate_key /etc/nginx/tls/inception.key;
ssl_protocols TLSv1.2 TLSv1.3;
root /var/www/html;
index index.php index.html;
client_max_body_size 32m;
location / {
try_files $uri $uri/ /index.php?$args;
}
location ~ \.php$ {
try_files $uri =404;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_pass wordpress:9000;
}
}Ce que fait chaque partie
- listen 443 ssl : aucune écoute HTTP 80.
- ssl_protocols : autorise seulement 1.2 et 1.3.
- root : fichiers WordPress montés dans NGINX.
- try_files : route les URLs WordPress vers index.php.
- fastcgi_pass wordpress:9000 : joint PHP-FPM par DNS Compose.
nginx -t valide le fichier et HTTPS sert WordPress.
Si cela échoue
502 indique souvent PHP-FPM/réseau ; 404 PHP indique un volume non partagé ou SCRIPT_FILENAME erroné.
Prouver que c’est correct
Section intitulée « Prouver que c’est correct »Question de soutenance — Un certificat autosigné chiffre-t-il ?
Oui. Il chiffre la connexion, mais le navigateur ne lui fait pas confiance automatiquement.
Étape 84 — Terminer le démarrage de NGINX
Section intitulée « Étape 84 — Terminer le démarrage de NGINX »Objectif. Tu feras de NGINX le vrai processus principal du container.
État du projet avant cette étape. Le script sait créer le certificat et la configuration est prête.
Comprendre le changement
Section intitulée « Comprendre le changement »nginx -t refuse de démarrer si la syntaxe est invalide. exec nginx -g ‘daemon off;’ remplace le script par NGINX au premier plan : NGINX devient PID 1.
Faire une seule chose
Section intitulée « Faire une seule chose »Ajoute le test de configuration puis la commande exec à la fin de entrypoint.sh.
Fichiers ou emplacements concernés
srcs/requirements/nginx/tools/entrypoint.sh
nginx -t
exec nginx -g 'daemon off;'Ce que fait chaque partie
- nginx -t : refuse de démarrer avec une configuration invalide.
- exec : remplace le shell.
- daemon off : conserve NGINX au premier plan.
docker top nginx montre nginx master en PID principal, puis ses workers.
Si cela échoue
Si nginx -t échoue, corrigez le fichier ou les chemins TLS ; n’ajoutez pas une commande factice.
Prouver que c’est correct
Section intitulée « Prouver que c’est correct »Question de soutenance — Un certificat autosigné chiffre-t-il ?
Oui. Il chiffre la connexion, mais le navigateur ne lui fait pas confiance automatiquement.
Étape 85 — Reconstruire l’image complète
Section intitulée « Étape 85 — Reconstruire l’image complète »Objectif. Tu vérifieras ensemble certificat, configuration et vrai processus.
État du projet avant cette étape. Les trois fichiers NGINX ont maintenant leur contenu final.
Comprendre le changement
Section intitulée « Comprendre le changement »Une reconstruction est obligatoire : une image déjà créée ne récupère pas automatiquement les modifications faites dans le Dockerfile ou les fichiers copiés.
Faire une seule chose
Section intitulée « Faire une seule chose »Reconstruis l’image puis lance-la temporairement avec le volume WordPress et le réseau déjà créés. Arrête ce test après avoir lu les logs.
docker build -t inception-nginx srcs/requirements/nginx
docker run --rm --name nginx-test --network inception -p 443:443 -v wordpress_data:/var/www/html -e DOMAIN_NAME=${LOGIN}.42.fr inception-nginxCe que fait chaque partie
- build incorpore les derniers fichiers.
- --rm supprime ce container de test à son arrêt.
- --network inception lui permet de résoudre wordpress.
- -p 443:443 publie temporairement HTTPS.
- -v lui donne la même copie des fichiers WordPress.
nginx -t annonce une syntaxe correcte puis le processus reste au premier plan.
Si cela échoue
Si wordpress est introuvable, vérifie que la stack des deux premiers services tourne sur le réseau inception. Quitte avec Ctrl+C.
Prouver que c’est correct
Section intitulée « Prouver que c’est correct »Question de soutenance — Un certificat autosigné chiffre-t-il ?
Oui. Il chiffre la connexion, mais le navigateur ne lui fait pas confiance automatiquement.