Création d’un certificat SSL sur apache

Mise en place d’un certificat SSL reconnu par les navigateurs pour sécurisation le surf des internaute en protégeant ses données. Cette installation se fait sur un système Linux doté d’un serveur web Apache.

Google a fait part l’année dernière qu’il privilégierait les sites proposant une connexion sécurisée en ssl.
Plusieurs solutions existes, malheureusement souvent payantes, cependant il existe des solutions gratuites :

  • startssl
  • let’s encrypt

Je vais expliquer la méthode avec Source : Let’s encrypt qui permet de générer autant de certificat que l’on veut (1 seul gratuit pour startssl). Le second avantage de Let’s encrypt est qu’il provient d’un consortium de grands acteurs d’internet, il est donc reconnu par les navigateurs.

Installation de let’s Encrypt

Installation générale

git clone https://github.com/letsencrypt/letsencrypt
cd letsencrypt
./letsencrypt-auto –help

Let’s Encrypt pour Apache

Spécifiquement pour Apache :

./letsencrypt-auto --apache

Cela va analyser vos fichiers de configuration de vos hôtes virtuels, si il y a une erreur, il vous indiquera :

The apache plugin is not working; there may be problems with your existing configuration. 
The error was: PluginError(('There has been an error in parsing the file (%s): % s', u'/etc/apache2/sites-available/nom_du_fichier.conf', u'Syntax error'),)

Il va vous falloir retrouver la ou les erreurs dans votre configuration, commentez les lignes en dehors des <directory> et relancer la commande jusqu’à trouver la source de l’erreur.

J’ai eu ce soucis, je suis parti d’une configuration simple et je me suis aperçu qu’il y avait une erreur sur une de mes lignes qui n’empêchait pas la mise en ligne du site.

A l’issue de cette vérification, l’interface vous propose sur quel domaine (conf dans apache) vous voulez que le certificat ssl se porte.

Renouvellement automatique du certificat

Dernière étape, le certificat a une validité de 90 jours, il faudra donc penser à renouveler le certificat. Nous pouvons le faire de manière manuelle :

./letsencrypt-auto certonly --apache --renew-by-default -d example.com -d www.example.com

On va préférer mettre en place un petit script qui s’exécutera de manière régulière.

Mise en place du script de renouvellement

Nous allons télécharger le script et le rendre exécutable :

sudo curl -L -o /usr/local/sbin/le-renew http://do.co/le-renew
sudo chmod +x /usr/local/sbin/le-renew

Exécution du script manuellement

Pour l’exécution du script, un argument est nécessaire, il correspond à votre certificat, la liste des certificats disponibles pour LetsEncrypt sont visible ls /etc/letsencrypt/live .
Pour exécuter le script :

sudo le-renew exemple.com

Si aucun renouvellement n’est nécessaire, la console vous retournera cela :

Checking expiration date for example.com...
The certificate is up to date, no need for renewal (89 days left).

Automatisation avec Cron

Editer Crontab en super utilisateur (voir le guide crontab):

sudo crontab -e

Ajouter la ligne suivante :

30 2 * * 1 /usr/local/sbin/le-renew example.com >> /var/log/le-renew.log

Puis :

sudo service cron restart

Vous allez donc exécuter votre vérification de renouvellement tous les dimanches à 2h30.

Mettre à jour le client Let’s Encrypt (optionnel)

Dans un terminal :

cd /etc/letsencrypt
sudo git pull

Cela mettra à jour votre dossier où est installé Let’s Encrypt.

Problèmes rencontrés

Lors du premier renouvellement, rien ne s’est exécuté correctement, après quelques soirées de recherche, des suppressions de dossier (à éviter), des suppressions de certificat (à éviter), j’ai un peu cherché. Tout d’abord, il faut se placer dans le dossier letsencrypt, puis saisir :

./letsencrypt-auto renew

Ceci va forcer le renouvellement des certificats, ce n’est pas très propre mais cela fonctionne.

Voilà comment obtenir un certificat SSL valide et reconnu par les navigateur internet.

Source : Digitalocean.com.

Laisser un commentaire