Tout d’abord, pour préparer votre machine, il faut la mettre à jour. Sous Debian il suffit d’exécuter cette commande :
apt-get update && apt-get upgrade
Ensuite il faut se rendre à la page https://certbot.eff.org/ et choisir votre type de serveur et votre système d’exploitation. (Dans mon cas Apache en serveur web et Debian 8 en OS)
Un tutoriel s’affiche il suffit alors de le suivre.
Etape 1 – Installation prérequis apache :
Installer le paquet apache2 :
apt-get install apache2
Mettre le nom de domaine dans la configuration d’Apache : (ici je modifie le site par défaut)
nano /etc/apache2/sites-enabled/000-default.conf
<VirtualHost *:80> ServerName alexbacher.ddns.net ServerAdmin webmaster@localhost DocumentRoot /var/www/html
Redémarrer le service apache2 :
service apache2 restart
Tester l’accès en IP avant de continuer :
Etape 2 – créer un nom de domaine avec No-IP :
Pour les besoins du maquettage je me suis tourné vers NO-IP pour obtenir un nom de domaine pour mon adresse IP publique.
Il faut se rendre sur https://my.noip.com , se créer un compte et créer le nom de domaine de votre choix. (ici alexbacher.ddns.net)
Etape 3 – Créer les règles de redirection :
Il faut créer une règle pour le port http(80) et pour le port https(443) sur votre box ou pare-feu. Dans mon cas il s’agit d’une bbox :
La règle NAT & PAT consiste à rediriger toutes personnes extérieures souhaitant se rendre sur le port 80 ou 443 vers mon serveur web en 192.168.1.200. Il s’agit d’une étape essentielle au bon fonctionnement de Let’s Encrypt.
Pour vérifier, il faut se rendre à l’adresse de No-IP alexbacher.ddns.net :
Etape 4 – ajouter le dépôt jessie backport :
Se rentre dans le fichier de configuration des sources :
vi /etc/apt/sources.list
Et ajouter la ligne suivante :
deb http://ftp.debian.org/debian jessie-backports main
Mettre à jour la liste des paquets :
apt-get update
Lors de l’exécution de cette commande il faut vérifier que les paquets sont bien téléchargés :
root@SRVWEB:~# apt-get update Ign http://ftp.fr.debian.org jessie InRelease Réception de : 1 http://security.debian.org jessie/updates InRelease [63,1 kB] Atteint http://ftp.fr.debian.org jessie Release.gpg Atteint http://ftp.fr.debian.org jessie Release Atteint http://ftp.fr.debian.org jessie/main amd64 Packages Atteint http://security.debian.org jessie/updates/main amd64 Packages Atteint http://security.debian.org jessie/updates/contrib amd64 Packages Atteint http://ftp.fr.debian.org jessie/contrib amd64 Packages Atteint http://security.debian.org jessie/updates/contrib Translation-en Atteint http://ftp.fr.debian.org jessie/contrib Translation-en Atteint http://security.debian.org jessie/updates/main Translation-en Atteint http://ftp.fr.debian.org jessie/main Translation-fr Atteint http://ftp.fr.debian.org jessie/main Translation-en Réception de : 2 http://ftp.debian.org jessie-backports InRelease [166 kB] Réception de : 3 http://ftp.debian.org jessie-backports/main Translation-en [627 kB] Réception de : 4 http://ftp.debian.org jessie-backports/main amd64 Packages [909 kB] 1 765 ko réceptionnés en 6s (253 ko/s) Lecture des listes de paquets... Fait
Etape 5 – installer CertBot et ses dépendances :
Une seule commande suffit à effectuer cette tâche, la voici :
apt-get install python-certbot-apache -t jessie-backports
Etape 6 – lancer le script CertBot, pour ajouter le certificat a votre site internet :
certbot –apache
Choisir votre site internet dans la liste :
root@SRVWEB:~# certbot --apache Saving debug log to /var/log/letsencrypt/letsencrypt.log Which names would you like to activate HTTPS for? ------------------------------------------------------------------------------- 1: alexbacher.ddns.net ------------------------------------------------------------------------------- Select the appropriate numbers separated by commas and/or spaces, or leave input blank to select all options shown (Enter 'c' to cancel):1
Renseigner l’adresse de courriel :
Enter email address (used for urgent renewal and security notices) (Enter 'c' to cancel):[email protected]
Accepter les conditions générales :
Starting new HTTPS connection (1): acme-v01.api.letsencrypt.org ------------------------------------------------------------------------------- Please read the Terms of Service at https://letsencrypt.org/documents/LE-SA-v1.1.1-August-1-2016.pdf. You must agree in order to register with the ACME server at https://acme-v01.api.letsencrypt.org/directory ------------------------------------------------------------------------------- (A)gree/(C)ancel: a
Le script effectue son travail…
Obtaining a new certificate Performing the following challenges: tls-sni-01 challenge for alexbacher.ddns.net Enabled Apache socache_shmcb module Enabled Apache ssl module /usr/lib/python2.7/dist-packages/OpenSSL/rand.py:58: UserWarning: implicit cast from 'char *' to a different pointer type: will be forbidden in the future (check that the types are as you expect; use an explicit ffi.cast() if they are correct) result_code = _lib.RAND_bytes(result_buffer, num_bytes) Waiting for verification... Cleaning up challenges Generating key (2048 bits): /etc/letsencrypt/keys/0000_key-certbot.pem Creating CSR: /etc/letsencrypt/csr/0000_csr-certbot.pem Created an SSL vhost at /etc/apache2/sites-available/000-default-le-ssl.conf Enabled Apache socache_shmcb module Enabled Apache ssl module Deploying Certificate to VirtualHost /etc/apache2/sites-available/000-default-le-ssl.conf Enabling available site: /etc/apache2/sites-available/000-default-le-ssl.conf
CertBot vous propose deux options :
- Autoriser l’accès en HTTP et HTTPS a votre site
- Rediriger toutes les trames HTTP vers des trames HTTPS
Mon choix se porte vers le second car bien plus sécurisé.
Please choose whether HTTPS access is required or optional. ------------------------------------------------------------------------------- 1: Easy - Allow both HTTP and HTTPS access to these sites 2: Secure - Make all requests redirect to secure HTTPS access ------------------------------------------------------------------------------- Select the appropriate number [1-2] then [enter] (press 'c' to cancel): 2
Voilà votre site internet est sécurisé SSL !
Enabled Apache rewrite module Redirecting vhost in /etc/apache2/sites-available/000-default.conf to ssl vhost in /etc/apache2/sites-available/000-default-le-ssl.conf ------------------------------------------------------------------------------- Congratulations! You have successfully enabled https://alexbacher.ddns.net You should test your configuration at: https://www.ssllabs.com/ssltest/analyze.html?d=alexbacher.ddns.net -------------------------------------------------------------------------------
La fin du script vous informe de la date d’expiration du certificat :
IMPORTANT NOTES: - Congratulations! Your certificate and chain have been saved at /etc/letsencrypt/live/alexbacher.ddns.net/fullchain.pem. Your cert will expire on 2017-12-25. To obtain a new or tweaked version of this certificate in the future, simply run certbot again with the "certonly" option. To non-interactively renew *all* of your certificates, run "certbot renew" - If you lose your account credentials, you can recover through e-mails sent to [email protected]. - Your account credentials have been saved in your Certbot configuration directory at /etc/letsencrypt. You should make a secure backup of this folder now. This configuration directory will also contain certificates and private keys obtained by Certbot so making regular backups of this folder is ideal. - If you like Certbot, please consider supporting our work by: Donating to ISRG / Let's Encrypt: https://letsencrypt.org/donate Donating to EFF: https://eff.org/donate-le
Pour vérifier il faut se rendre à l’adresse de No-IP alexbacher.ddns.net :
On peut aussi tester le certificat https avec https://www.ssllabs.com/ssltest
Etape 7 – ajouter une tâche cron pour renouveler le certificat automatiquement :
Pour rappel la syntaxe d’une tâche cron :
# .---------------- minute (0 - 59) # | .------------- heure (0 - 23) # | | .---------- jour du mois (1 - 31) # | | | .------- mois (1 - 12) OU jan,feb,mar,apr ... # | | | | .---- jour de la semaine (0 - 6) (Sunday=0 or 7) OU sun,mon,tue,wed,thu,fri,sat # | | | | | # * * * * * commande a exécuter
La syntaxe que j’ai retenue : « vérifier et renouveler si besoin le certificat chaque jour de chaque mois à 2h00 »
Ajout de la tâche planifiée :
crontab -e
A la fin du fichier ajouter la ligne suivante :
00 02 * * * certbot renew --pre-hook "service apache2 stop" --post-hook "service apache2 start"
Si la syntaxe est bonne, crontab affiche ce message :
root@SRVWEB:~# crontab -e crontab: installing new crontab root@SRVWEB:~#
Cet article totalise 1 596 vues 👍 Merci pour votre visite! 🙂
1 commentaire
Redirection de ports sur BBox – Le Labo · 30 mai 2020 à 18h19
[…] Installer un certificat Let’s Encrypt (Certbot) […]