Toujours agaçant de devoir payer pour un certificat ssl surtout lorsque de nombreux effets bénéfiques en découlent : plus de sécurité pour l’utilisateur, un meilleur classement SEO etc. J’ai trouvé une solution open source qui permet de faire ça gratuitement et facilement, j’ai nommé https://certbot.eff.org/
Générer et installer un certificat
Leur site est plutôt très bien fait. La doc d’où sont issues les commandes est ici. C’est pour Jessie (remplacer avec votre version de debian si besoin). Passons à la pratique :
# Ajoute le repo à sources.list echo 'deb http://ftp.debian.org/debian jessie-backports main' >> /etc/apt/sources.list # Met à jour apt et install les packages apt update && apt-get install certbot -t jessie-backports # Méthode 1 : créer un nouveau certificat sans redémarrer le serveur (cf ci-dessous) certbot certonly --webroot -w /var/www/example -d example.com -d www.example.com -w /var/www/thing -d thing.is -d m.thing.is # Méthode 2 : créé un nouveau certificat mais nécessite d'arrêter le serveur (cf ci-dessous) certbot certonly --standalone -d example.com -d www.example.com
Petite explication quant aux 2 méthodes ci-dessus. Pour générer un certificat, certbot s’assure que vous aillez bien les droits et que le domaine vous appartient. C’est pourquoi il est indispensable de mettre le bon chemin vers vos fichiers web. Tout cela doit être accessible de l’extérieur pour être validé
Méthode 1 : Les dossiers cachés (.*) doivent être accessibles de l’extérieur. Si cela est trop compliqué ou demande trop de configuration, je vous conseille d’utiliser la Méthode 2, plus bourrin mais qui fonctionnera sans problème.
Méthode 2 : Arrêtez votre serveur avant, certbot va en lancer un sur le port 443 juste le temps de valider les autorisations.
# Tâche cron qui s'exécute tous les 1ier du mois pour renouveler la période de validité du certificat 0 7 1 * * /usr/bin/certbot renew
Et voilà, vous êtes prêt à avoir votre certificat votre site sécurisé avec un certificat SSL tout beau, tout propre, gratuit et open source !
Utiliser ce certificat avec nginx
Rien de compliqué ici, voici comment je m’y suis pris:
listen 443 ssl; server_name openentreprises.fr; ssl on; ssl_certificate /etc/letsencrypt/live/openentreprises.fr/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/openentreprises.fr/privkey.pem;
Tout ceci à mettre dans votre directive server.