Gestion du certificat ====================== Gérer les certificats avec YunoHost ----------------------------------- 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`. #### De quoi ai-je besoin pour avoir un certificat Let’s Encrypt ? 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](diagnostic_fr) si vous avez besoin d'aide. #### Est-ce que mon certificat sera renouvelé automatiquement ? 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. #### Je souhaite/j’ai besoin d’utiliser un certificat d’une autre autorité de certification 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](certificate_fr). Ce processus sera peut-être rendu plus facile par YunoHost dans le futur. Procédure de migration -------------------- > À cause des [limitations actuelles](https://letsencrypt.org/docs/rate-limits/) 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 ! #### J’ai utilisé l’application *letsencrypt_ynh*. 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 : ```bash 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é. #### J’ai installé mes certificats Let’s Encrypt manuellement 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. Tapez la commande suivante : ```bash yunohost domain cert-install your.domain.tld --force ``` 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/`. Dépannage --------------- #### 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`. #### J’ai essayé de désinstaller l’application Let’s Encrypt, mais cela a cassé ma configuration nginx ! 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… #### J’obtiens "Too many certificates already issued", que se passe-t-il ? 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 : ```bash 127.0.0.1 your.domain.tld ``` À propos des certificats et de Let’s Encrypt ------------------------------------ #### Qu’est-ce que HTTPS ? À quoi servent les certificats SSL ? 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](https://en.wikipedia.org/wiki/Public-key_cryptography) 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](https://en.wikipedia.org/wiki/Man-in-the-middle_attack). 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](https://en.wikipedia.org/wiki/Public_key_certificate). #### Pourquoi est-ce que les navigateurs se plaignent de mon certificat auto-signé ? 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. #### Que se passe-t-il avec Let’s Encrypt ? 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](https://en.wikipedia.org/wiki/Automated_Certificate_Management_Environment), 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. #### Comment fonctionne Let’s Encrypt ? Pour vérifier l'identité de votre serveur et délivrer un certificat, Let's Encrypt utilise le [protocole ACME](https://en.wikipedia.org/wiki/Automated_Certificate_Management_Environment). 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 domaine `jaimelecafe.com` en rendant l'URI `http://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. #### A-t-on vraiment besoin des autorités de certification ? 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](http://www.darkreading.com/endpoint/authentication/fake-google-digital-certificates-found-and-confiscated/d/d-id/1297165), [2](https://reflets.info/microsoft-et-ben-ali-wikileaks-confirme-les-soupcons-d-une-aide-pour-la-surveillance-des-citoyens-tunisiens/)]. Des alternatives ont été proposées, comme [DANE/DNSSEC](https://en.wikipedia.org/wiki/DNS-based_Authentication_of_Named_Entities), qui repose sur les DNS et ne nécessite pas d'autorité de certification.