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)

C:\Users\abacher2016\AppData\Local\Microsoft\Windows\INetCache\Content.Word\2017-09-14 14_54_07-Certbot.png

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 :

C:\Users\Alex B\AppData\Local\Microsoft\Windows\INetCache\Content.Word\local sans https.png

 

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 :

C:\Users\Alex B\AppData\Local\Microsoft\Windows\INetCache\Content.Word\regle redirection bbox.png

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 :

C:\Users\Alex B\AppData\Local\Microsoft\Windows\INetCache\Content.Word\web sans https.png

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):demo@alexbacher.fr

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 demo@alexbacher.fr.
 - 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 :

C:\Users\Alex B\AppData\Local\Microsoft\Windows\INetCache\Content.Word\web avec https.png

On peut aussi tester le certificat https avec https://www.ssllabs.com/ssltest

C:\Users\Alex B\AppData\Local\Microsoft\Windows\INetCache\Content.Word\sslllab.png

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:~#
Catégories : UNIX/Linux

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *