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 15/03/2018, 11:42] – 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' | ||
+ | |||
+ | --- // |