Différences
Ci-dessous, les différences entre deux révisions de la page.
Prochaine révision | Révision précédente | ||
serveur_hebergement:apache2:let_s_encrypt_certbot_et_ssl_sur_debian [2022/10/21 16:59] – créée fate | serveur_hebergement:apache2:let_s_encrypt_certbot_et_ssl_sur_debian [2024/03/22 13:45] (Version actuelle) – [Création d’un certificat wildcard] fate | ||
---|---|---|---|
Ligne 3: | Ligne 3: | ||
Pour ceux qui ne connaissent pas, Let's Encrypt fourni, gratuitement, | Pour ceux qui ne connaissent pas, Let's Encrypt fourni, gratuitement, | ||
- | Le SSL, qu' | + | Le SSL, qu' |
Pour expliquer rapidement comment ça fonctionne, le SSL utilise une paire de clé (publique et privée) et une autorité de confiance : | Pour expliquer rapidement comment ça fonctionne, le SSL utilise une paire de clé (publique et privée) et une autorité de confiance : | ||
- Le navigateur se connecte au serveur et demande une connexion SSL | - Le navigateur se connecte au serveur et demande une connexion SSL | ||
- Le serveur envoi un certificat SSL, contenant sa clé publique et sa signature numérique chiffrée, au navigateur | - Le serveur envoi un certificat SSL, contenant sa clé publique et sa signature numérique chiffrée, au navigateur | ||
- | - Le navigateur essaye de déchiffrer la signature avec les clés publique | + | - Le navigateur essaye de déchiffrer la signature avec les clés publiques |
- S'il y arrive, ça prouve que le certificat a été émis par une autorité de confiance, tout va bien. S'il n'y arrive pas il va déchiffrer la signature avec la clé publique fournie avec le certificat et va alerter l' | - S'il y arrive, ça prouve que le certificat a été émis par une autorité de confiance, tout va bien. S'il n'y arrive pas il va déchiffrer la signature avec la clé publique fournie avec le certificat et va alerter l' | ||
- Une fois le certificat validé, le navigateur va échanger des données chiffrées avec le serveur en utilisant des suites cryptographiques (voir plus de détails [[https:// | - Une fois le certificat validé, le navigateur va échanger des données chiffrées avec le serveur en utilisant des suites cryptographiques (voir plus de détails [[https:// | ||
Ligne 14: | Ligne 14: | ||
La révolution amenée par Let's Encrypt est qu'il a été reconnu comme une autorité de confiance et que, contrairement aux autres autorités de confiance, il propose des certificats gratuitement. | La révolution amenée par Let's Encrypt est qu'il a été reconnu comme une autorité de confiance et que, contrairement aux autres autorités de confiance, il propose des certificats gratuitement. | ||
- | Toutes les commandes indiquées doivent être lancé | + | Toutes les commandes indiquées doivent être lancées |
=====Activez le support SSL===== | =====Activez le support SSL===== | ||
Ligne 41: | Ligne 41: | ||
=====Création du certificat SSL sans wildcard ===== | =====Création du certificat SSL sans wildcard ===== | ||
- | Si vous avez besoin de créer un certificat wildcard (c'est à dire valide pour tous les sous-domaines également), | + | Si vous avez besoin de créer un certificat wildcard (c’est-à-dire valide pour tous les sous-domaines également), |
Commencez par créer un fichier lets_encrypt.ini (vous pouvez le nommer comme vous voulez) et mettez-y les lignes suivantes dedans : | Commencez par créer un fichier lets_encrypt.ini (vous pouvez le nommer comme vous voulez) et mettez-y les lignes suivantes dedans : | ||
Ligne 58: | Ligne 58: | ||
* agree-tos=true : permet d’accepter les conditions d’utilisation de Certbot | * agree-tos=true : permet d’accepter les conditions d’utilisation de Certbot | ||
* email : c’est l’adresse sur laquelle seront envoyés les messages de renouvellement. Il vous faut la modifier | * email : c’est l’adresse sur laquelle seront envoyés les messages de renouvellement. Il vous faut la modifier | ||
- | * domains : indique les domaines pour lesquels vous voulez renouveler les certificats. Il vous faudra les modifier pour mettre vos nom de domaine | + | * domains : indique les domaines pour lesquels vous voulez renouveler les certificats. Il vous faudra les modifier pour mettre vos noms de domaine |
* rsa-key-size = 4096 : permet de générer un certificat avec une clé RSA de 4096 bits et non pas de 2048 bits comme c’est le cas par défaut. | * rsa-key-size = 4096 : permet de générer un certificat avec une clé RSA de 4096 bits et non pas de 2048 bits comme c’est le cas par défaut. | ||
Ligne 87: | Ligne 87: | ||
Si vous allez dans le répertoire / | Si vous allez dans le répertoire / | ||
- | * privkey.pem qui est la clé privé | + | * privkey.pem qui est la clé privée |
- | * cert.pem qui est le certificat SSL. (n'est utilisé que par les version | + | * cert.pem qui est le certificat SSL. (n'est utilisé que par les versions |
- | * chain.pem qui contient des certificats | + | * chain.pem qui contient des certificats |
- | * fullchain.pem qui est une concaténation des fichier | + | * fullchain.pem qui est une concaténation des fichiers |
===== Création d’un certificat wildcard ===== | ===== Création d’un certificat wildcard ===== | ||
Ligne 96: | Ligne 96: | ||
Let’s Encrypt permet également de générer des certificats wildcard. Les wildcard sont des certificats qui sont valables pour l’ensemble des sous-domaines. | Let’s Encrypt permet également de générer des certificats wildcard. Les wildcard sont des certificats qui sont valables pour l’ensemble des sous-domaines. | ||
- | Avec la méthode du chapitre précédent, | + | Avec la méthode du chapitre précédent, |
Pour vérifier que le nom de domaine pour lequel vous souhaitez générer un certificat vous appartient, Let’s Encrypt propose 2 types de challenges : | Pour vérifier que le nom de domaine pour lequel vous souhaitez générer un certificat vous appartient, Let’s Encrypt propose 2 types de challenges : | ||
- | * http-01 : il envoi une requête http | + | * http-01 : il envoie |
* dns-01 : il demande la création d’un enregistrement TXT sur la zone du domaine | * dns-01 : il demande la création d’un enregistrement TXT sur la zone du domaine | ||
Dans le chapitre précédent, | Dans le chapitre précédent, | ||
- | Je ne traiterai dans ce chapitre que le cas du serveur DNS auto-hébergé, | + | Je ne traiterai dans ce chapitre que le cas du serveur DNS auto-hébergé, |
Il faut donc impérativement que vous ayez suivi la page [[gnu_linux: | Il faut donc impérativement que vous ayez suivi la page [[gnu_linux: | ||
- | Seuls les chapitres 1 et 2 de cet articles, qui traitent de la création de la clé et de la configuration de Bind, sont indispensable. | + | Seuls les chapitres 1 et 2 de cet article, qui traitent de la création de la clé et de la configuration de Bind, sont indispensables. |
L’autre partie traite de la mise à jour de l’adresse ip, qui n’est pas utile pour les wildcard. | L’autre partie traite de la mise à jour de l’adresse ip, qui n’est pas utile pour les wildcard. | ||
Par contre, il ne vous faudra pas utiliser “update-policy”comme indiqué au début du chapitre 2, mais “allow-update” comme indiqué à la fin du chapitre 2 (que vous utilisiez ISPConfig ou non). | Par contre, il ne vous faudra pas utiliser “update-policy”comme indiqué au début du chapitre 2, mais “allow-update” comme indiqué à la fin du chapitre 2 (que vous utilisiez ISPConfig ou non). | ||
Ligne 160: | Ligne 160: | ||
< | < | ||
- | =====Configuration | + | Une chose à savoir, les certificats créés par certbot ne sont accessibles qu'à l' |
+ | Commencez par installer le paquet acl : | ||
+ | <code bash> | ||
+ | Ensuite tapez les commandes suivantes (remplacez utilisateur par votre utilisateur devant accéder aux certificats et nomdedomaine.fr par votre nom de domaine) : | ||
+ | <code bash> | ||
+ | sudo setfacl -m u: | ||
+ | sudo setfacl -R -m u: | ||
+ | </ | ||
+ | La première commande donne accès à l' | ||
+ | La seconde commande donne accès à l' | ||
+ | |||
+ | L' | ||
+ | |||
+ | =====Configuration | ||
Maintenant, il nous faut modifier les fichiers de config d' | Maintenant, il nous faut modifier les fichiers de config d' | ||
Ligne 174: | Ligne 187: | ||
| | ||
ErrorLog / | ErrorLog / | ||
- | CustomLog / | + | |
| | ||
- | < | + | |
- | Options -Indexes +FollowSymLinks +MultiViews | + | Options -Indexes +FollowSymLinks +MultiViews |
- | AllowOverride none | + | AllowOverride none |
- | Require all granted | + | Require all granted |
- | </ | + | </ |
SSLEngine on | SSLEngine on | ||
- | SSLCertificateFile | + | |
- | SSLCertificateKeyFile | + | SSLCertificateKeyFile |
- | Header always set Strict-Transport-Security " | + | |
Ligne 209: | Ligne 222: | ||
* SSLCipherSuite : indique les suites cryptographiques qui peuvent être utilisées (des failles de sécurités ont été trouvées sur certaines suites). | * SSLCipherSuite : indique les suites cryptographiques qui peuvent être utilisées (des failles de sécurités ont été trouvées sur certaines suites). | ||
* SSLHonorCipherOrder : on indique que l' | * SSLHonorCipherOrder : on indique que l' | ||
- | * SSLSessionTickets : on désactive les tickets de session TLS. Si cette fonction est activé | + | * SSLSessionTickets : on désactive les tickets de session TLS. Si cette fonction est activée |
* SSLUseStapling on et SSLStaplingCache : permet de vérifier les certificats SSL plus rapidement. | * SSLUseStapling on et SSLStaplingCache : permet de vérifier les certificats SSL plus rapidement. | ||
| | ||
Ligne 230: | Ligne 243: | ||
# intermediate configuration | # intermediate configuration | ||
SSLProtocol | SSLProtocol | ||
- | SSLCipherSuite | + | SSLCipherSuite |
SSLHonorCipherOrder | SSLHonorCipherOrder | ||
SSLSessionTickets | SSLSessionTickets | ||
Ligne 292: | Ligne 305: | ||
<code bash> | <code bash> | ||
- | Il ne nous reste plus qu’a lancer ce script tous les jours via le crontab de l’utilisateur root. | + | Il ne nous reste plus qu’à lancer ce script tous les jours via le crontab de l’utilisateur root. |
Editez le crontab du root | Editez le crontab du root | ||
Ligne 303: | Ligne 316: | ||
Le script sera lancé tous les jours à 1h du matin par l’utilisateur root et votre certificat sera renouvelé automatiquement 24h avant son expiration. | Le script sera lancé tous les jours à 1h du matin par l’utilisateur root et votre certificat sera renouvelé automatiquement 24h avant son expiration. | ||
- | Les sorties seront | + | Les sorties seront |