web-dev-qa-db-fra.com

Est-ce une mauvaise pratique d'utiliser des certificats SSL auto-signés?

Les certificats SSL sont assez chers pour les particuliers, surtout si vous devez sécuriser différents sous-domaines. J'envisage d'utiliser des certificats auto-signés, car mon objectif principal est de sécuriser la connexion et non de m'authentifier.

Cependant, plusieurs navigateurs affichent des avertissements désagréables lorsqu'ils rencontrent un tel certificat. Décourageriez-vous l'utilisation de certificats auto-signés (par exemple, pour une petite application Web ou la page d'administration d'un petit site Web)? Ou est-ce que ça va dans certains cas?

29
Wookai

En général, il est mauvais d'utiliser un cert auto-signé. Si vous le faites, vous courez le risque que des personnes quittent votre site après avoir été averties que votre certificat est mauvais. Plus important encore, vous courez un plus grand risque que quelqu'un fasse une attaque par injection lorsqu'il utilise son propre certificat auto-signé à la place du vôtre et que le visiteur ne connaisse pas mieux.

Consultez l'article ici, http://www.sslshopper.com/article-when-are-self-signed-certificates-acceptable.html pour un peu plus d'informations à ce sujet.

14
Ben Hoffman

Comme RandomBen l'a dit, les certificats auto-signés sont généralement mal vus pour les raisons qu'il a expliquées. Mais il y a une situation dans laquelle ils vont bien: si le groupe de personnes qui doivent soumettre des données sensibles sur votre site Web est petit et limité, elles ont toutes des compétences techniques et vous permettent de communiquer avec toutes. Dans ce cas, vous pouvez donner à chaque personne les détails du certificat, puis le vérifier manuellement lorsqu'il se rend sur votre site et ajouter une exception de sécurité, le cas échéant.

À titre d’exemple extrême, sur mon VPS personnel, j’ai un sous-domaine administratif, auquel je ne devrais accéder que par moi-même. Il n'y aurait aucun problème à sécuriser ce domaine avec un certificat auto-signé car je peux vérifier manuellement que le certificat de serveur utilisé pour sécuriser la connexion est le même que celui que j'ai installé sur le serveur.

Dans les cas où un certificat auto-signé ne fonctionne pas ou si vous préférez en avoir un "réel", je recommande Let's Encrypt , un projet lancé par Internet Security Research Group et soutenu par les principaux réseaux Internet. entreprises, qui offre des certificats SSL sans frais. Ils peuvent le faire parce que le processus de vérification qu'ils utilisent est complètement automatisé et qu'un serveur Web prenant en charge leur protocole ACME (comme Caddy , que j'utilise actuellement) peut obtenir certificats entièrement seuls. Let's Encrypt ne vérifie pas que vous , en tant que personne, êtes ce que vous dites être; il vérifie uniquement que votre serveur Web est capable de servir du contenu sur le domaine auquel il prétend. Let's Encrypt est pris en charge par tous les principaux navigateurs, mais il est bien connu que la vérification est minimale. Par conséquent, si vous utilisez un site de commerce électronique ou tout autre site dans lequel des personnes soumettront des informations sensibles, vous devriez probablement dépenser de l'argent pour obtenir un message. certificat avec un niveau de validation supérieur.

Auparavant, je recommandais les certificats gratuits StartSSL de StartCom aux personnes qui ne voulaient pas payer pour la validation, mais plus maintenant. StartCom a été secrètement acquise par WoSign en 2016 et a ensuite délivré des certificats illégitimes pour plusieurs domaines. En conséquence, les principaux navigateurs ont cessé de prendre en charge les certificats StartCom. (Autant que je sache, IE ne les a jamais supportés de toute façon.) Quoi qu'il en soit, Let's Encrypt est bien plus pratique.

14
David Z

Il est pas mauvaise pratique d'utiliser des certificats auto-signés. Les certificats auto-signés ont de nombreuses applications pratiques pour lesquelles il n’a aucun sens d’utiliser un certificat signé par une autorité de certification.

Par exemple, sur plusieurs de mes serveurs, la connexion est établie sans mot de passe. Ce sont des serveurs auxquels je me connecte si souvent et que parfois, je garde plusieurs connexions SSH ouvertes, il est fastidieux de taper mon nom d'utilisateur et mon mot de passe à chaque fois.

À la place, j'utilise un certificat SSL auto-signé que je génère sur chacun de mes ordinateurs clients (un poste de travail au bureau, un ordinateur portable et mon poste de travail à domicile). Ce type de configuration me permet d’utiliser des phrases secrètes assez longues, sécurisées et totalement uniques pour chacun de mes serveurs sans affecter la productivité. Et comme j'ai un accès direct aux serveurs sur lesquels je peux installer la clé publique pour chaque certificat, je n'ai aucun intérêt à utiliser un certificat signé par une autorité de certification.

Je pourrais configurer ma propre autorité de certification racine avec laquelle je peux signer tous les certificats à usage interne de notre société. Ainsi, je n'aurais qu'à installez une seule clé publique sur chaque serveur. Cependant, notre organisation n’a pas atteint la taille qui le nécessite réellement et, aux fins de la sécurisation du protocole HTTP, ce serait la même chose que de posséder un certificat auto-signé.

De même, les certificats auto-signés sont fréquemment utilisés pour les connexions par courrier électronique, la signature PGP et les connexions serveur à serveur, où il est facile de pré-échanger des clés publiques. Dans nombre de ces cas, cela est en fait plus sûr que de compter sur une chaîne de certificats qui pourrait être compromise à tout moment de la chaîne.

3
Lèse majesté

Si vous sécurisez plusieurs sous-domaines, vous pouvez utiliser certificats génériques , qui (selon le nombre de sous-domaines que vous sécurisez) pourrait s'avérer beaucoup moins coûteux que d'en acheter un par domaine; Par exemple, RapidSSL utilise le caractère générique moins cher que les certificats individuels une fois que vous avez quatre domaines utilisés.

2
Cebjyre