Let’s Encrypt et acme.sh sous Debian avec Nginx

Maintenant que Let’s Encrypt est sorti de bêta, nous allons pouvoir commencer à jouer un peu plus sérieusement. Depuis l’annonce de la bêta privé j’utilise Let’s Encrypt, ça fait le job sans problème. J’ai commencé avec le client officiel, mais j’ai vite cherché une solution plus light, sans dépendances et simple à mettre en place. Je suis donc tombé sur acme.sh (anciennement le.sh). Je vais vous présenter ici ma configuration. Je pars d’une Debian Jessie fonctionnelle (c’est mieux) avec Nginx faisant tourner mes divers services (Owncloud, FreshRSS, Kanboard…).

Installation de acme.sh

Rien de plus simple, je vous laisse parcourir le readme du projet, en gros l’installation se résume à :

Il s’agit ni plus ni moins que de script en sh, ce qui est plutôt cool, pas de dépendances, une installation en quelques secondes et cerise sur le gâteau, une tâche cron est mise en place pour vérifier si un certificat expire.

Configuration de Nginx

Je vais utiliser un webroot pour l’identification et la certification auprès de Let’s Encrypt. Le fichier généré pour le challenge à donc besoin d’être accessible via HTTP. Voici un exemple de configuration de mes hôtes virtuels :

Les fichiers de challenges vont être générés dans /var/www/letsencrypt, assurez-vous d’avoir créé le dossier et autorisé Nginx (www-data). On peut aussi voir que je redirige toutes les requêtes HTTP vers HTTPS pour le reste. J’applique cette configuration pour les hôtes virtuels que je veux certifier. N’oubliez pas de recharger la configuration de Nginx et on va pouvoir demander nos certificats.

Création des certificats

Nous allons maintenant demander nos certificats. Une simple commande permets cela, vous pouvez spécifier un ou plusieurs domaines :

Avec plusieurs domaines :

Patienter quelques secondes, les certificats devraient être générés.

On installe les certificats dans /etc/ssl/private :

Vous devriez trouver un fichier de configuration dans votre $HOME/.acme.sh/mon_domaine.fr/mon_domaine.fr.conf pour modifier à volontés les variables :

Activation du SSL dans Nginx

Il nous reste à configurer les certificats dans les hôtes virtuels Nginx :

Recharger ensuite Nginx et vous devriez avoir un beau petit certificat.

Tester la configuration

Vous pouvez relancer une certification pour tester :

Si tous se passe pour le mieux, vous devriez obtenir de nouveau certificats et Nginx devrait redémarrer tous seul comme un grand.

Frédéric LIÉTART

TiFredFr - Passionné de logiciels libres depuis vingt ans.

Vous aimerez aussi...

3 réponses

  1. Merci du partage, je connaissais pas le projet acme.sh !

  2. Macgyvre dit :

    Merci pour ce tuto qui m’a bien servi.. Juste une coquille un peu embêtante dans Activation:

    il faut écrire:
    ssl_certificate_key /etc/ssl/private/mon_domaine.fr-key.pem;
    au lieu de
    ssl_certificate_key /etc/ssl/private/mon_domaine.fr.pem;

Laisser un commentaire

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