Mettre le HTTPS en place facilement sur un serveur dédié

Publié le 17 mars 2017 Par WOoOinux

HTTPS

Le HTTPS c’est quoi ?

Petite définition issue du site Blog du WebDesign :

Le HTTPS, pour HyperText Transfer Protocol Secure, est la version sécurisée du protocole HTTP. Maintenant que cela est dit, passons à la description du HTTP !

Le HTTP est un protocole de communication client-serveur créée pour le web. Ce n’est qu’un protocole, pas un logiciel, ce qui fait qu’il peut exister de nombreux clients HTTP (tous les navigateurs internet par exemple) et de nombreux serveurs différents (Apache HTTP Server, Nginx, ….), et que tous les clients et serveurs peuvent communiquer de manière indifférenciée tant qu’ils implémentent le protocole HTTP.

Le HTTPS, donc, est l’utilisation du HTTP couplé avec une couche de sécurité (par exemple SSL) qui permet non seulement de chiffrer toutes les données échangées entre le client et le serveur, mais aussi de confirmer l’identité de votre site web.

Pourquoi utiliser le HTTPS ?

L’usage du HTTPS pour votre site est avant tout une question de sécurité. Mais ce n’est pas tout car depuis peu Google a annoncé favoriser l’indexation des sites en HTTPS sur son moteur de recherche. En gros, si vous ne passez pas à HTTPS vous serez… moins bien référencés…

Ils avaient, d’ailleurs, déjà annoncé la modification de leur système d’indexation en décembre 2015 : https://webmaster-fr.googleblog.com/2015/12/indexer-pages-https-par-defaut.html

Installer des certificats SSL Facilement avec CertBot

Qu’est-ce que CertBot ?

CertBot est un script qui permet de déployer facilement le HTTPS sur votre serveur. C’est un client officiel de Let’s Encrypt qui génère gratuitement des certificats SSL (nécessaires à l’utilisation du HTTPS).

Déploiement du HTTPS et des certicats SSL

Commencez par vous rendre sur le site de CertBot :

https://certbot.eff.org/

Sélectionnez votre type de serveur Web (Apache, Nginx, etc.) puis votre système d’exploitation.

CertBot va générer un script personnalisé qu’il vous faudra commencer par récupérer.

$ wget https://dl.eff.org/certbot-auto

Rendez maintenant ce script exécutable.

$ chmod a+x certbot-auto

Et, enfin, lancez le script.

$ ./certbot-auto

Le script commence par mettre à jour la liste des dépôts puis installe quelques paquets python nécessaires à son utilisation.

Appuyez sur la touche « Entrée » pour valider l’installation de ces paquets.

Les paquets supplémentaires suivants seront installés : 
  libpython-dev
Les NOUVEAUX paquets suivants seront installés :
  libffi-dev libpython-dev python-dev python-virtualenv
0 mis à jour, 4 nouvellement installés, 0 à enlever et 124 non mis à jour.
Il est nécessaire de prendre 1 593 ko dans les archives.
Après cette opération, 2 376 ko d'espace disque supplémentaires seront utilisés.
Souhaitez-vous continuer ? [O/n]

Renseignez une adresse email qui servira à vous notifier de l’expiration des certificats.

Enter email address (used for urgent renewal and security notices) (Enter 'c' to
cancel):

Acceptez la licence d’utilisation en tapant « A » puis en appuyant sur la touche « Entrée ».

-------------------------------------------------------------------------------
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:

Choisissez si vous souhaitez partager ou non votre adresse email avec l’Electronic Frontier Foundation.

-------------------------------------------------------------------------------
Would you be willing to share your email address with the Electronic Frontier
Foundation, a founding partner of the Let's Encrypt project and the non-profit
organization that develops Certbot? We'd like to send you email about EFF and
our work to encrypt the web, protect its users and defend digital rights.
-------------------------------------------------------------------------------
(Y)es/(N)o:

Sélectionnez le ou les noms de domaine sur lesquels vous souhaitez activer le HTTPS (séparez les numéros par des virgules si vous en sélectionnez plusieurs) :

Which names would you like to activate HTTPS for?
-------------------------------------------------------------------------------
1: mondomaine.org
2: www.mondomaine.org
3: monautredomaine.com
-------------------------------------------------------------------------------
Select the appropriate numbers separated by commas and/or spaces, or leave input
blank to select all options shown (Enter 'c' to cancel):

Sélectionnez le mode « secure » si vous souhaitez que votre serveur Web fasse automatiquement la redirection de http://www.votredomaine.tld vers https://www.votredomaine.tld

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):

Si tout s’est bien passé vous devriez obtenir un message de succès.

Congratulations! You have successfully enabled https://mondomaine.tld

Automatiser les mises à jour de vos certificats SSL

Par défaut, les certificats SSL ont une durée de validité de 90 jours. Il est donc essentiel de les mettre à jour régulièrement pour continuer à profiter du HTTPS.

Pour ce faire, éditer le fichier crontab de votre serveur.

$ nano /etc/crontab

Puis ajoutez une règle pour lancer le script de mise à jour en tâche de fond tous les premiers du mois à 4h00 du matin.

## Mise à jour automatique des certificats ssl le premier de chaque mois à 4h00
0 4 1 * * root /chemin-vers-certbot/certbot-auto renew --quiet --no-self-upgrade

Enregistrez puis quitter.

CTRL+O
CTRL+X

Et voilà, vos certificats se mettrons à jour automatiquement chaque mois.

Ouvrir le port 443 dans le firewall

Bien évidemment, pour que tout cela fonctionne correctement, il vous faut ouvrir le port 443 (port par défaut pour le HTTPS) dans votre firewall :-))