Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentesRévision précédente
Prochaine révision
Révision précédente
tutoriel:securiser_apache2_avec_ssl [Le 16/03/2021, 17:52] – [Mise en application avec le Serveur Http Apache2] 137.255.5.189tutoriel:securiser_apache2_avec_ssl [Le 13/11/2024, 16:09] (Version actuelle) – [Création du certificat avec Let's encrypt] install python3-certbot-apache bcag2
Ligne 11: Ligne 11:
 ==== Le protocole TLS ==== ==== Le protocole TLS ====
  
-Le protocole [[https://fr.wikipedia.org/wiki/Transport_Layer_Security|TLS]] permet à deux machines de communiquer de manière sécurisée. Les informations échangées entre les deux machines sont de ce fait pratiquement inviolables+Le protocole [[https://fr.wikipedia.org/wiki/Transport_Layer_Security|TLS]] permet à deux machines de communiquer de manière sécurisée.\\ 
-Il doit assurer l'authentification du serveur grâce à un certificat. La confidentialité des données grâce au chiffrement et l’intégrité des données.+Il assure authentification du serveur, le chiffrement des données en transit et le contrôle de leur intégrité. Les informations échangées entre les deux machines sont de ce fait pratiquement inviolables.
  
  
 ==== Les Certificats ==== ==== Les Certificats ====
  
-[[https://fr.wikipedia.org/wiki/Certificat_%C3%A9lectronique|Un certificat]] permet de fournir diverses informations concernant l'identité de son détenteur (la personne qui publie les données). Ce certificat s'accompagne d'une **clé publique** qui est indispensable pour que la communication entre les machines soit chiffrée. +[[https://fr.wikipedia.org/wiki/Certificat_%C3%A9lectronique|Un certificat]] permet de fournir diverses informations concernant l'identité de son détenteur (la personne qui publie les données). Ce certificat s'accompagne d'une **clé publique** qui est indispensable pour que la communication entre les machines soit chiffrée.
  
-Afin de garantir l'authenticité du certificat, ce dernier est signé numériquement provenant soit par une autorité de certification (Société spécialisée dans la certification) soit par le détenteur du certificat lui-même. Dans ce dernier cas, on parlera de certificat auto-signé.+Afin de garantir l'authenticité du certificat, ce dernier est signé numériquement soit par une autorité de certification (Société spécialisée dans la certification) soit par le détenteur du certificat lui-même. Dans ce dernier cas, on parlera de certificat auto-signé.
  
-Dans la plupart des cas, l'obtention d'un certificat certifié par une AC (autorité de certification) ayant un prix assez élevé, les webmasters auront tendance à vouloir signer eux-même leur certificat. Ce faisant, il est à noter que dans ce cas, le certificat ne sera pas reconnu par les navigateurs web comme étant certifié+Un certificat auto-signé n'est pas reconnu comme digne de confiance par les navigateurs web et générera un avertissement.
  
-[[http://www.cacert.org|CA Cert]] permet d'obtenir des certificats gratuits. Il vous faudra néanmoins installer le certificat racine dans votre navigateur. +Les autorités de certification font payer leur serviceCependant[[https://letsencrypt.org/|Let's encrypt]] permet maintenat d'obtenir des certificats gratuits. En outre Let'Encrypt fournit l'application [[https://certbot.eff.org/|cerbot]] qui simplifie grandement la création et la gestion des certificats.
- +
-[[https://letsencrypt.org/|Let's encrypt]] permet également d'obtenir des certificats gratuits. En outre Let'Encrypt fournit l'application [[https://certbot.eff.org/|cerbot]] qui simplifie grandement la création et la gestion des certificats. Vous avez un excellent tuto pour ubuntu 16.04 [[https://www.digitalocean.com/community/tutorials/how-to-secure-apache-with-let-s-encrypt-on-ubuntu-16-04|Ici]]+
  
 Pour ce tutoriel, nous supposons que nous avons déjà mis en place un [[:apache2#creation_d_hotes_virtuels|hôte virtuel]] basé sur le nom **example.com**, ce dernier étant accessible sur le **port 80** à l'adresse http://example.com Pour ce tutoriel, nous supposons que nous avons déjà mis en place un [[:apache2#creation_d_hotes_virtuels|hôte virtuel]] basé sur le nom **example.com**, ce dernier étant accessible sur le **port 80** à l'adresse http://example.com
  
 ===== Mise en application avec le Serveur Http Apache2 ===== ===== Mise en application avec le Serveur Http Apache2 =====
-You have also to enable the module "headers" since you use : 
-Header always set Strict-Transport-Security "max-age=...."  
-in your vhost config. 
  
-I think 
 ==== Activation du module SSL/TLS ==== ==== 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 : Pour que le protocole TLS puisse fonctionner avec le Serveur HTTP Apache2, il faut activer le module **ssl** avec la commande :
 <code>sudo a2enmod ssl</code> <code>sudo a2enmod ssl</code>
-puis recharger la configuration d'Apache2 faites :+ 
 +puis recharger la configuration d'Apache2 avec :
 <code>sudo systemctl reload apache2</code> <code>sudo systemctl reload apache2</code>
-Ou si vous êtes sur une ancienne version d'Ubuntu : +
-<code>sudo service apache2 reload</code>+
 Pour vérifier l'activation du module: Pour vérifier l'activation du module:
-<code>apache2ctl -M | grep ssl </code>+<code>a2query -ssl</code>
  
 ==== Création du certificat avec Let's encrypt ==== ==== Création du certificat avec Let's encrypt ====
  
-Prérequis :  +Prérequis : 
-  * avoir un nom de domaine pleinement qualifié  (nous utiliserons example.com dans la suite) ;+  * avoir un nom de domaine pleinement qualifié acheté auprès d'un bureau d’enregistrement (nous utiliserons example.com dans la suite) 
 +  * avoir un enregistrement DNS mettant en correspondance le nom de domaine et l'adresse IP publique du serveur ;
   * avoir un serveur web apache déjà configuré, fonctionnel et accessible publiquement.   * avoir un serveur web apache déjà configuré, fonctionnel et accessible publiquement.
  
 === Installation de Certbot === === Installation de Certbot ===
-Les instructions pour installer et utiliser simplement certbot sont disponibles en anglais [[https://certbot.eff.org/|sur le site officiel.]] 
  
-En voici, un récapitulatif. Il faut d'abord installer le dépôt ppa officiel (sans risques) puis installer le paquet certbot : +Il suffit d'installer le paquet certbot : 
-<code>sudo apt update +<code bash>
-sudo apt install software-properties-common +
-sudo add-apt-repository ppa:certbot/certbot+
 sudo apt update sudo apt update
 sudo apt install certbot</code> sudo apt install certbot</code>
-Au moins depuis la 20.04, certbot est dans les dépôts, pas besoin de ce ppa qui ne contient rien pour focal.+<note tip>Il peut être nécessaire aussi d'installer((src:https://stackoverflow.com/questions/68641213/issue-with-certbot-to-generate-a-ssl-certificate)) <code bash>sudo apt install python3-certbot-apache</code> </note>
  
 === Générer le certificat avec Certbot === === Générer le certificat avec Certbot ===
 Certbot dispose de très nombreuses options qui sont documentées en anglais [[hhttps://certbot.eff.org/docs/using.html|sur le site officiel]]. Certbot dispose de très nombreuses options qui sont documentées en anglais [[hhttps://certbot.eff.org/docs/using.html|sur le site officiel]].
  
 +== Méthode n°1 ==
 Le script est très bien fait, ce qui implique qu'il est possible de simplement lancer, pour un serveur avec apache: Le script est très bien fait, ce qui implique qu'il est possible de simplement lancer, pour un serveur avec apache:
 <code bash> <code bash>
Ligne 71: Ligne 64:
 </code> </code>
 Le script se déroule et pose des questions, à commencer par les domaine à passer en https, puis si on veut rediriger http vers https… Le script se déroule et pose des questions, à commencer par les domaine à passer en https, puis si on veut rediriger http vers https…
 +== Méthode n°2 ==
 Une autre méthode également simple pour générer un certificat en utilisant le greffon « //webroot// » est: Une autre méthode également simple pour générer un certificat en utilisant le greffon « //webroot// » est:
  
Ligne 78: Ligne 71:
 Cette commande va générer un certificat valable pour les domaines (option -d) example.com et www.example.com, qui correspondent à un site web existant et fonctionnel placé dans le dossier racine (option -w) var/www/example. Cette commande va générer un certificat valable pour les domaines (option -d) example.com et www.example.com, qui correspondent à un site web existant et fonctionnel placé dans le dossier racine (option -w) var/www/example.
  
-À l'issue de la commande précédente sera crée une arborescence sous /etc/letsencrypt qui contient vos certificats et des fichiers de configuration nécessaires aux procédures de renouvellement et de révocation. Sera crée également une tâche cron (/etc/cron.d./certbot) permettant de renouveler automatiquement les certificats avant qu'ils n'arrivent à échéance (les certificats Let'sEncrypt ne sont valables que 3 mois).+À l'issue de la commande précédente sera crée une arborescence sous /etc/letsencrypt qui contient vos certificats et des fichiers de configuration nécessaires aux procédures de renouvellement et de révocation. Seront crées également une tâche cron (/etc/cron.d./certbot) et un timer systemd (lib/systemd/system/certbot.timer) permettant de renouveler automatiquement les certificats avant qu'ils n'arrivent à échéance (les certificats Let'sEncrypt ne sont valables que 3 mois).
  
 L’emplacement du certificat et de la clé privée est indiqué à la fin de la procédure, typiquement : L’emplacement du certificat et de la clé privée est indiqué à la fin de la procédure, typiquement :
Ligne 85: Ligne 78:
  
 ==== Configuration de l'hôte virtuel pour HTTPS ==== ==== Configuration de l'hôte virtuel pour HTTPS ====
 +
 +<note important>Uniquement si vous avez utilisé la méthode n°2 pour obtenir le certificat. Avec la méthode n°1 les fichiers sont générés automatiquement</note>
  
 [[:tutoriel:comment_editer_un_fichier|Ouvrez le fichier]] de configuration de votre hôte virtuel, par exemple /etc/apache2/sites-available/example.com.conf : [[:tutoriel:comment_editer_un_fichier|Ouvrez le fichier]] de configuration de votre hôte virtuel, par exemple /etc/apache2/sites-available/example.com.conf :
Ligne 171: Ligne 166:
  
 Votre site devrait maintenant être accessible uniquement en HTTPS. Votre site devrait maintenant être accessible uniquement en HTTPS.
-==== Renforcer la sécurité ==== +==== Renforcer la sécurité ====
  
 Si vous voulez optimiser la sécurité des échanges en HTTPS, le plus simple est d'utiliser le [[https://mozilla.github.io/server-side-tls/ssl-config-generator/|générateur de configuration de Mozilla]] Si vous voulez optimiser la sécurité des échanges en HTTPS, le plus simple est d'utiliser le [[https://mozilla.github.io/server-side-tls/ssl-config-generator/|générateur de configuration de Mozilla]]
  
 --- //[[:utilisateurs:bruno|bruno]]// --- //[[:utilisateurs:bruno|bruno]]//