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 11/01/2023, 17:17] bruno [Le protocole TLS] |
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 19: | Ligne 19: | ||
[[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. | + | |
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> | ||
- | <code>sudo a2ensite default-ssl</code> | ||
- | **Si "bash: a2enmod : commande introuvable", ou "bash: a2ensite : commande introuvable"** | + | puis recharger la configuration d'Apache2 avec : |
- | <code>sudo /usr/sbin/a2enmod ssl</code> | + | |
- | <code>sudo /usr/sbin/a2ensite default-ssl</code> | + | |
- | + | ||
- | puis recharger la configuration d'Apache2 faites : | + | |
<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 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 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 : |