La fonctionnalité principale du gestionnaire de certificat est de permettre l'installation
de certificat Let's Encrypt facilement sur vos domaines. Vous pouvez l'utiliser depuis
l'interface d'admin web (Certificat SSL sur la page d'info d'un domaine), ou avec
la ligne de commande avec yunohost domain cert-status
, cert-install
et cert-renew
.
Votre serveur doit être accessible depuis le reste d'Internet sur le port 80 (et 443),
et le DNS de votre nom.de.domaine.tld
doit être correctement configuré (i.e. le
domaine doit pointer sur l'IP publique de votre serveur). Vous pouvez vous aider
de cette documentation si vous avez besoin d'aide.
Oui. À l'heure actuelle, les certificats Let's Encrypt sont valides pendant 90 jours. Une tâche automatique (cron job) sera exécutée tous les jours pour renouveler les certificats qui expirent dans moins de 15 jours. Un email sera envoyé à l'utilisateur root si le renouvellement échoue.
Ceci n'est pas géré automatiquement pour le moment. Il vous faudra créer manuellement une demande de signature de certificat (CSR) qui devra être donné à votre CA, puis importer le certificat obtenu. Plus d'informations sur cette page. Ce processus sera peut-être rendu plus facile par YunoHost dans le futur.
À cause des limitations actuelles sur la fréquence d'émissions de nouveaux certificats Let's Encrypt, nous recommandons que vous ne migriez pas vers cette nouvelle fonctionnalité tant que vous n'en avez pas besoin. C'est en particulier vrai pour les utilisateurs de nohost.me / nohost.st (et d'autres services de nom de domaine gratuit qui partagent un sous-domaine commun). Si trop de monde migrent pendant la même période, vous vous retrouverez peut-être bloqué avec un certificat auto-signé pendant quelques jours !
Il vous sera demandé de désinstaller l'application pour pouvoir utiliser la nouvelle gestion de certificat. Vous pouvez procéder à la désinstallation depuis l'interface web, ou bien depuis la ligne de commande avec :
yunohost app remove letsencrypt
yunohost domain cert-install
Soyez conscients que la première commande devrait remettre en place des certificats auto-signés sur vos domaines. La deuxième commande tentera ensuite d'installer un certificat Let's Encrypt sur chacun de vos domaines ayant un certificat auto-signé.
Il vous faut aller dans la configuration nginx et retirer les fichiers letsencrypt.conf
(ou le nom que
vous lui avez donné et qui contient un bloc location '/.well-known/acme-challenge'
) pour chacun
de vos domaines. Retirez les liens symboliques vers vos certificats actuels :
rm /etc/yunohost/certs/your.domain.tld/key.pem
rm /etc/yunohost/certs/your.domain.tld/crt.pem
Puis tapez les commandes suivantes :
yunohost domain cert-install your.domain.tld --force --self-signed
yunohost domain cert-install your.domain.tld
pour chacun des domaines pour lesquels vous souhaitez avoir un certificat Let's Encrypt.
Finalement, supprimez la tâche automatique (certificateRenewer) dans /etc/cron.weekly/
,
et backupez puis supprimez le répertoire /etc/letsencrypt/
.
L’interface d’admin bloque l’accès à l’interface de gestion du certificat en prétendant que l’app letsencrypt est installée, pourtant elle n’est pas là !
Assurez-vous que le cache du navigateur est bien rafraîchi (Ctrl + Shift + R sur Firefox).
Si cela ne résous pas le problème, rapportez votre expérience sur le bugtracker ou le forum.
Vous pouvez contourner le problème en utilisant la commande :
yunohost domain cert-install your.domain.tld
.
Désolé. Quelques utilisateurs ont rapporté que cela arrive lorsque le script de désinstallation ne trouve pas
de backup des certificats auto-signés. Utiliser yunohost domain cert-install
devrait tout de même fonctionner…
Pour l'instant, Let's Encrypt a mis en place un taux limite d'émission de certificat, qui
est de 20 nouveaux certificats pendant une période de 7 jours pour un sous-domaine donné.
Par exemple, les domaines nohost.me
et noho.st
sont considérés comme des sous-domaines
(des domaines me
et st
). ce qui veut dire que tous les utilisateurs du service nohost.me / noho.st
partagent une même limite commune. D'après Let's Encrypt, ceci s'applique aux nouveaux certificats,
mais pas aux renouvellements ou duplications. Si vous rencontrez ce message, il n'y a donc pas grand
chose à faire d’autre que ré-essayer dans quelques heures/jours.
L’installation du certificat échoue avec "Wrote file to 'un chemin', but couldn't download 'une url'" !
Cela devrait être réparé dans le futur, mais pour le moment vous pouvez tenter d'ajouter la ligne suivante
au fichier /etc/hosts
du serveur :
127.0.0.1 your.domain.tld
HTTPS est la version sécurisée du protocole HTTP, qui décrit comment un client (par ex. votre navigateur web) et un serveur (par ex. nginx qui tourne sur votre instance YunoHost) peuvent discuter entre eux. HTTPS s'appuie fortement sur la cryptographie asymmétrique pour garantir deux choses :
- la confidentialité, ce qui veut dire qu'un attaquant ne sera pas capable de déchiffrer le contenu d'une communication si elle est interceptée ;
- l'identification du serveur, ce qui veut dire qu'un serveur peut et doit prouver qui il prétend être, dans le but d'éviter les attaques man-in-the-middle.
Les certificats SSL sont utilisés par les serveurs pour prouver leur identitié.
Le processus général repose sur la confiance en des tiers, appelés Autorité
de Certification (CA), dont le rôle est de vérifier l'identité d'un serveur (par ex.
qu'une machine donnée contrôle bien le domaine jaimelecafe.com
) avant
de délivrer des certificats cryptographiques.
Les certificats auto-signés sont, comme leur nom l'indique, auto-signés, ce qui veut dire que le serveur était sa propre autorité de certification lorsqu'il a créé le certificat. Un tel certificat ne permet pas de vérifier et garantir l'identité du serveur, puisqu'il aurait tout aussi pu être généré par un attaquant de son côté, dans le but de réaliser une attaque man-in-the-middle.
Historiquement, le processus de vérification de l'identité des serveurs demandait une intervention humaine, donc du temps et de la monnaie.
En 2015, Let's Encrypt a développé un protocole nommé ACME, qui permet de vérifier automatiquement qu'une machine contrôle un domaine, et de délivrer un certificat gratuitement, réduisant drastiquement le coût de mise en place d'un certificat SSL.
Pour vérifier l'identité de votre serveur et délivrer un certificat, Let's Encrypt utilise le protocole ACME. Il fonctionne grosso-modo de la manière suivante (simplifiée, mais vous comprendrez l'idée) :
- Un programme tourne sur votre serveur et contacte l'autorité de certification Let's Encrypt et
lui demande un certificat pour le domaine
jaimelecafe.com
. - L'autorité de certification Let's Encrypt génère une chaîne de caractères aléatoire comme
A84F2D0B
, et dit au programme sur votre serveur de prouver qu'il gère le domainejaimelecafe.com
en rendant l'URIhttp://jaimelecafe.com/.well-known/acme-challenge/A84F2D0B
accessible. - Le programme sur votre serveur créé/modifie des fichiers en conséquence.
- La CA Let's Encrypt tente d'accéder à l'URI. Si cela fonctionne, elle conclue que le programme contrôle
bien le domaine
jaimelecafe.com
, et lui délivre un certificat. - Le programme sur votre serveur récupère le certificat et le met en place.
La dépendance aux autorités de certification peut être critiquée, car elles constituent des points centraux vulnérables dans le schéma de sécurité. Certaines autorités ont été reconnues coupable d'avoir délivré de faux certificats par le passé, parfois avec des implications sérieuses et très concrètes. [1, 2].
Des alternatives ont été proposées, comme DANE/DNSSEC, qui repose sur les DNS et ne nécessite pas d'autorité de certification.