Différences
Ci-dessous, les différences entre deux révisions de la page.
| Les deux révisions précédentesRévision précédenteProchaine révision | Révision précédente | ||
| tutoriel:securiser_apache2_avec_ssl [Le 10/03/2018, 12:59] – [Le protocole TLS] bruno | tutoriel:securiser_apache2_avec_ssl [Le 18/09/2020, 18:16] (Version actuelle) – [Création du certificat avec Let'encrypt] 90.107.163.138 | ||
|---|---|---|---|
| Ligne 1: | Ligne 1: | ||
| + | {{tag> | ||
| + | ---- | ||
| + | |||
| + | ====== Utiliser HTTPS avec Apache2 ====== | ||
| + | Ce tutoriel présente une procédure permettant de servir des pages web [[: | ||
| + | Avec HTTPS, les échanges HTTP entre le client et le serveur sont chiffrés (et donc sécurisés) via le protocole TLS (ou autrefois SSL). | ||
| + | |||
| + | ===== Introduction ===== | ||
| + | |||
| + | ==== Le protocole TLS ==== | ||
| + | |||
| + | Le protocole [[https:// | ||
| + | Il doit assurer l' | ||
| + | |||
| + | |||
| + | ==== Les Certificats ==== | ||
| + | |||
| + | [[https:// | ||
| + | |||
| + | Afin de garantir l' | ||
| + | |||
| + | Dans la plupart des cas, l' | ||
| + | |||
| + | [[http:// | ||
| + | |||
| + | [[https:// | ||
| + | |||
| + | Pour ce tutoriel, nous supposons que nous avons déjà mis en place un [[: | ||
| + | |||
| + | ===== Mise en application avec le Serveur Http Apache2 ===== | ||
| + | |||
| + | ==== Activation du module SSL/TLS ==== | ||
| + | |||
| + | Pour que le protocole TLS puisse fonctionner avec le Serveur HTTP Apache2, il faut activer le module **ssl** avec la commande : | ||
| + | < | ||
| + | puis recharger la configuration d' | ||
| + | < | ||
| + | Ou si vous êtes sur une ancienne version d' | ||
| + | < | ||
| + | Pour vérifier l' | ||
| + | < | ||
| + | |||
| + | ==== Création du certificat avec Let's encrypt ==== | ||
| + | |||
| + | Prérequis : | ||
| + | * avoir un nom de domaine pleinement qualifié | ||
| + | * avoir un serveur web apache déjà configuré, fonctionnel et accessible publiquement. | ||
| + | |||
| + | === Installation de Certbot === | ||
| + | Les instructions pour installer et utiliser simplement certbot sont disponibles en anglais [[https:// | ||
| + | |||
| + | En voici, un récapitulatif. Il faut d' | ||
| + | < | ||
| + | sudo apt install software-properties-common | ||
| + | sudo add-apt-repository ppa: | ||
| + | sudo apt update | ||
| + | sudo apt install certbot</ | ||
| + | Au moins depuis la 20.04, certbot est dans les dépôts, pas besoin de ce ppa qui ne contient rien pour focal. | ||
| + | |||
| + | === Générer le certificat avec Certbot === | ||
| + | Certbot dispose de très nombreuses options qui sont documentées en anglais [[hhttps:// | ||
| + | |||
| + | Le script est très bien fait, ce qui implique qu'il est possible de simplement lancer, pour un serveur avec apache: | ||
| + | <code bash> | ||
| + | sudo certbot --apache | ||
| + | </ | ||
| + | Le script se déroule et pose des questions, à commencer par les domaine à passer en https, puis si on veut rediriger http vers https… | ||
| + | |||
| + | Une autre méthode également simple pour générer un certificat en utilisant le greffon « //webroot// » est: | ||
| + | |||
| + | <code bash> | ||
| + | |||
| + | Cette commande va générer un certificat valable pour les domaines (option -d) example.com et www.example.com, | ||
| + | |||
| + | À l' | ||
| + | |||
| + | L’emplacement du certificat et de la clé privée est indiqué à la fin de la procédure, typiquement : | ||
| + | * **/ | ||
| + | * **/ | ||
| + | |||
| + | ==== Configuration de l' | ||
| + | |||
| + | [[: | ||
| + | <code apache> | ||
| + | < | ||
| + | ServerName example.com | ||
| + | ServerAlias www.example.com | ||
| + | ServerAdmin webmaster@example.com | ||
| + | DocumentRoot / | ||
| + | < | ||
| + | Options -Indexes +FollowSymLinks +MultiViews | ||
| + | AllowOverride none | ||
| + | Require all granted | ||
| + | </ | ||
| + | ErrorLog / | ||
| + | CustomLog / | ||
| + | </ | ||
| + | </ | ||
| + | |||
| + | Et ajoutez à la suite l' | ||
| + | <code apache> | ||
| + | < | ||
| + | ServerName example.com | ||
| + | ServerAlias www.example.com | ||
| + | ServerAdmin webmaster@example.com | ||
| + | DocumentRoot / | ||
| + | < | ||
| + | Options -Indexes +FollowSymLinks +MultiViews | ||
| + | AllowOverride none | ||
| + | Require all granted | ||
| + | </ | ||
| + | |||
| + | # directives obligatoires pour TLS | ||
| + | SSLEngine on | ||
| + | SSLCertificateFile | ||
| + | SSLCertificateKeyFile | ||
| + | | ||
| + | Header always set Strict-Transport-Security " | ||
| + | |||
| + | ErrorLog / | ||
| + | CustomLog / | ||
| + | </ | ||
| + | </ | ||
| + | |||
| + | Enregistrez le fichier et rechargez la configuration d' | ||
| + | < | ||
| + | |||
| + | Votre site devrait maintenant être accessible en HTTP et en HTTPS. | ||
| + | |||
| + | === Forcer la connexion en HTTPS === | ||
| + | Si vous voulez que votre site ne soit accessible qu'en HTTPS et que les internautes soient redirigés automatiquement, | ||
| + | |||
| + | <code apache> | ||
| + | < | ||
| + | ServerName example.com | ||
| + | ServerAlias www.example.com | ||
| + | ServerAdmin webmaster@example.com | ||
| + | # Redirection 301 vers le site en HTTPS | ||
| + | Redirect permanent / https:// | ||
| + | </ | ||
| + | |||
| + | < | ||
| + | ServerName example.com | ||
| + | ServerAlias www.example.com | ||
| + | ServerAdmin webmaster@example.com | ||
| + | DocumentRoot / | ||
| + | < | ||
| + | Options -Indexes +FollowSymLinks +MultiViews | ||
| + | AllowOverride none | ||
| + | Require all granted | ||
| + | </ | ||
| + | |||
| + | # directives obligatoires pour TLS | ||
| + | SSLEngine on | ||
| + | SSLCertificateFile | ||
| + | SSLCertificateKeyFile | ||
| + | | ||
| + | Header always set Strict-Transport-Security " | ||
| + | |||
| + | ErrorLog / | ||
| + | CustomLog / | ||
| + | </ | ||
| + | </ | ||
| + | Enregistrez le fichier et rechargez la configuration d' | ||
| + | < | ||
| + | |||
| + | Votre site devrait maintenant être accessible uniquement en HTTPS. | ||
| + | ==== Renforcer la sécurité ==== | ||
| + | |||
| + | Si vous voulez optimiser la sécurité des échanges en HTTPS, le plus simple est d' | ||
| + | |||
| + | --- // | ||
