Différences
Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentes Révision précédente Prochaine révision | Révision précédente | ||
tutoriel:securiser_apache2_avec_ssl [Le 03/06/2022, 15:13] 78.196.241.242 [Création du certificat avec Let's encrypt] MAJ |
tutoriel:securiser_apache2_avec_ssl [Le 13/11/2024, 16:09] (Version actuelle) bcag2 [Création du certificat avec Let's encrypt] install python3-certbot-apache |
||
---|---|---|---|
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 service. Cependant[[https://letsencrypt.org/|Let's encrypt]] permet maintenat d'obtenir des certificats gratuits. En outre Let's 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 | ||
Ligne 35: | Ligne 33: | ||
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 -m 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 suffit d'installer le paquet certbot : | + | Il suffit d'installer le paquet certbot : |
- | <code> | + | <code bash> |
sudo apt update | sudo apt update | ||
sudo apt install certbot</code> | sudo apt install certbot</code> | ||
+ | <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 65: | 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 79: | 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 165: | 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]]// |