Un certificat SSL auto-signé est-il un faux sentiment de sécurité?

30

Un certificat SSL auto-signé est-il un faux sentiment de sécurité?

Si vous êtes écouté, l'utilisateur acceptera simplement le certificat comme il le fait toujours.

André
la source

Réponses:

25

Question intéressante, cela dépend de l'utilisation à mon avis. Vous êtes toujours protégé en termes de session cryptée, mais vous n'avez aucun moyen de savoir s'il s'agit du certificat SSL correct qui vous est présenté, sauf si vous distribuez votre certificat racine CA aux utilisateurs / clients. Pour les projets de test / développement internes, cela fonctionnerait très bien, vous générez un certificat d'autorité de certification racine que vous utilisez pour distribuer à vos utilisateurs (peut être effectué via la stratégie de groupe dans Windows et via la ligne de commande openssl sous Linux / BSD), puis utilisez ce certificat racine pour signer vos CSR. Les utilisateurs ne verront aucun avertissement ni rien et vous savez que le certificat est signé par votre autorité de certification interne.

Pour les sites externes où vous ne pouvez pas garantir cela, je dirais quand même qu'un certificat auto-signé vaut mieux que pas de SSL du tout si vous envoyez des mots de passe ou d'autres informations sensibles via la connexion.

Cependant, du côté positif, il existe de nombreux émetteurs de certificats "commerciaux" très bon marché, GoDaddy étant l'un d'entre eux. Vous pouvez obtenir un certificat pour environ 40 euros par an. GoDaddy offre même des certificats gratuits aux sites Web des projets OpenSource.

HampusLi
la source
C'est exactement ce que nous faisons. Soyez prudent, cependant avec les certificats bon marché. Certaines des autorités de certification racine sont plutôt étranges et toutes ne se trouvent pas dans la collection de certificats d'autorité de certification racine livrés avec tous les navigateurs.
wolfgangsz
4
+1 sauf "le certificat auto-signé vaut mieux que pas de SSL du tout" - si vous vérifiez que c'est votre certificat, et non celui fourni par un MITM. Honnêtement, à quand remonte la dernière fois qu'un utilisateur normal a fait cela? (Je soupçonne que la réponse impliquerait la lune bleue et les cochons volants) En d'autres termes, en utilisant un certificat SSL auto-signé sans avoir distribué vos certificats CA aux utilisateurs, vous désensibilisez les utilisateurs à l'alerte effrayante qu'ils reçoivent - ils apprendront pour cliquer dessus, "eh bien, ils m'ont dit d'ignorer l'avertissement sur mysite.example.com, donc je peux l'ignorer partout; regardez, une icône de verrouillage!" Voila, faux sentiment de sécurité!
Piskvor
7
@Piskvor, c'est en fait la faute des navigateurs. Premièrement, les navigateurs ne fournissent généralement pas un moyen «d'accepter en permanence» des certificats auto-signés inconnus auparavant afin que l'utilisateur ne se mette pas en danger à chaque connexion. Deuxièmement, les navigateurs ne découragent pas l'utilisation de l'ancien HTTP simple, créant également un faux sentiment de sécurité. Ainsi, HTTP est toujours pire que HTTPS, à la fois en termes de sécurité et de sensibilisation des utilisateurs (au moins, ils reçoivent l'avertissement!).
Rotsor
1
@ Rotsor: Premièrement, Opera a cette fonctionnalité que vous décrivez intégrée, FF a la patrouille de certificats (qui prévient au moins du changement de certificat). Notez également que tout sur SSL n'est pas un navigateur (IMAPS, etc.). Deuxièmement, comment la pléthore existante de sites HTTP ne fait-elle que la faute des navigateurs? (et non, les navigateurs HTTPS uniquement n'ont jamais été pris en compte, précisément parce qu'il y avait un réseau considérablement plus petit pour naviguer avec eux). Troisièmement, "ils reçoivent l'avertissement" serait utile, si seulement les utilisateurs le lisaient - et ne cliquaient pas aveuglément sur "accepter" pour le faire disparaître. "Cliquer sur accepter signifie comprendre" est l'illusion partagée des développeurs.
Piskvor
1
@Piskvor, bon à savoir que certains navigateurs proposent cette fonctionnalité. En ce qui concerne HTTP, je ne peux pas dire ce qui doit être fait (interdire HTTP n'est évidemment pas une option), mais avoir plus d'avertissements liés à la sécurité avec SSL auto-signé que sans SSL du tout est définitivement faux et est le navigateur ' faute!
Rotsor
12

Je vais être en désaccord, une fois pour des raisons techniques étroites et une fois pour des raisons générales.

Le fondement technique étroit est que le PO a posé des questions sur les certificats auto-signés, et plusieurs autres réponses se réfèrent aux certificats signés par des autorités de certification privées, ce qui est un problème légèrement différent. Mais pas très différent, donc ce n'est vraiment qu'une note en passant.

L'objection principale est que je pense que tant que les certificats signés commercialement coûtent plus que des dépenses insignifiantes - et 40 $ par an ne sont pas une dépense insignifiante pour beaucoup de gens sur cette planète - les certificats auto-signés ont un rôle majeur à jouer en sécurité Internet, à condition que leurs limites soient reconnues .

Un certificat auto-signé est comme une clé ssh de mon known_hostsfichier. Sans vérification indépendante, il ne peut pas m'assurer que je parle au système que je crois être; mais cela peut m'assurer que le système auquel je parle maintenant est le même que celui auquel j'ai parlé la dernière fois que je pensais avoir une conversation avec lui. Nous mettons en cache les clés ssh tout le temps, et je n'ai encore jamais rencontré d'administrateur système qui ait indépendamment vérifié plus d'une fraction des clés publiques de son known_hostsfichier.

Les certificats auto-signés (et, d'ailleurs, les certificats signés par des autorités de certification non généralement valides) sont bien meilleurs que pas de SSL du tout, tant que les gens se rendent compte qu'à moins de les vérifier, ils sécurisent uniquement la communication pour eux-mêmes, le serveur à l'autre extrémité de l'enregistrement DNS, et tous les hommes du milieu actuellement sur la ligne. S'ils vérifient indépendamment le certificat, l'authentification et le chiffrement sont au moins aussi solides que ceux fournis par un certificat signé par une autorité de certification reconnue.

De plus, ceux qui souhaitent présenter l'utilisation des certificats signés par une autorité de certification reconnue comme l'une et unique panacée de sécurité Internet peut avoir besoin de réfléchir à des questions telles que l'inclusion du CA de la signature du gouvernement chinois dans le paquet norme Mozilla , et le certificats SSL frauduleux signés par Comodo .

MadHatter soutient Monica
la source
Hélas, le modèle de «CA de confiance» est en effet cassé (et ce depuis des années); malheureusement, il ne s'en va pas (et il n'y a rien de mieux pour le remplacer). Comme toujours, SSL et les CA de confiance ne sont pas une poussière magique de lutin de sécurité; l'utilisateur doit maintenir activement la sécurité - ce qui est, pour la plupart, une hypothèse plutôt folle.
Piskvor
2
Vos utilisateurs sont-ils capables de faire une évaluation éclairée de leur niveau de confiance dans l'intégrité de leur chemin vers le serveur DNS actuel (y compris la possibilité d'empoisonnement du cache) et le périphérique qu'ils atteignent? Les miens ne savent pas ce qu'est le DNS, encore moins être en mesure de prendre des décisions de sécurité éclairées sur leur connexion à un serveur dans un autre état, connecté à un autre site via MPLS, qui est connecté à l'utilisateur via un VPN client, qu'ils sont sur via un café non crypté wifi. Évitez de leur donner cette responsabilité.
Shane Madden
2
@Shane Madden: Un domaine où cela est possible est l'administration frontales web - par exemple phpMyAdmin (ou, dans une moindre mesure, SVN sur HTTPS). Il y a généralement un nombre limité d'utilisateurs, et ils contiennent une fraction importante d'un indice . Je ne m'attendrais pas à ce que mon arrière-grand-père fasse la tête ou la queue d'un avertissement de certificat SSL, mais j'attends certainement cela d'un autre administrateur système, surtout s'il s'agit d'un serveur sous son contrôle. Un utilisateur de variété de jardin n'a pas non plus d'indice sur le fait que known_hosts@MadHatter fait référence.
Piskvor
8

Pour les sites externes, où les utilisateurs n'ont pas votre certificat CA installé (ce qui est le cas le plus courant), oui, un certificat auto-signé donne un faux sentiment de sécurité , et donc c'est pire qu'inutile:

  • Tout d'abord, sans certificat CA préinstallé, comment l'utilisateur vérifie-t-il que le certificat provient bien de vous et non d'un attaquant? En faisant correspondre les champs du certificat (CN, empreintes digitales, etc.), bien sûr - mais contre quoi? Alors maintenant, vous avez besoin d'un canal latéral pour vérifier le certificat - et dans les rares cas que j'ai vus, les opérateurs de ligne de support (qui auraient dû servir de canal latéral pour la vérification) n'ont aucune idée de ce que cela est censé signifier; En outre, l'exploitation d'un tel canal latéral coûte beaucoup plus cher que l'obtention d'un certificat signé par une autorité de certification, de sorte que l'utilisateur doit vous faire aveuglément confiance.

  • Deuxièmement, l'alerte effrayante que l'utilisateur reçoit est effrayante pour une bonne raison: puisque l'utilisateur ne peut pas / ne vérifiera pas le certificat présenté, il peut transmettre en toute sécurité des données à Elbonian Haxx0r D00dz.

  • Troisièmement, et pire que tout, vous désensibilisez les utilisateurs : "eh bien, ils m'ont dit que je devrais ignorer cet avertissement sur https://mysite.example.com/ , et une enclume ne m'a pas tombé sur la tête, et mon le poisson rouge n'est pas mort non plus; sooooo, cela signifie que c'est juste une autre boîte d'alerte sans aucune signification réelle, donc je peux ignorer cette boîte chaque fois que je la rencontre - je reçois quand même cette jolie icône de verrou, et c'est important. "

En d'autres termes, le niveau de protection est comparable à HTTP standard (sauf pour le reniflement sur le fil: bien que les données soient cryptées en transit, c'est une caractéristique plutôt anémique sans vérification des points finaux), mais le sentiment de protection est déraisonnablement élevé . Mauvaise analogie avec la voiture: "J'ai de l'ABS, donc je peux désormais conduire en toute sécurité dans de mauvaises conditions" - sauf que l'ABS n'existe que dans la brochure de vente de la voiture, sans être réellement présent dans la voiture.

Lecture suggérée: OWASP SSL Best practices

TL; DR: En utilisant des certificats auto-signés sur des sites accessibles au public, vous faites du Net un endroit pire, un utilisateur désemparé à la fois.

Piskvor
la source
2
@downvoter: J'apprécierais que vous indiquiez ma réponse est factuellement incorrecte ("incorrect" par opposition à "inconfortable, incommode et une peine à mettre en œuvre"). La sécurité est difficile, et dire "la la la je ne t'entends pas" ne fait rien pour y remédier.
Piskvor
2
Bien que je n'aie pas voté contre votre réponse, le texte de l'infobulle sur la flèche vers le bas indique que le vote vers le bas pour aucune raison autre qu'une réponse n'est pas utile. Je pense que le faux sens du pendule de sécurité peut aussi basculer dans l'autre sens. Les récentes violations de la comodo RA prouvent qu'il n'est pas si difficile pour un "méchant" de se procurer un certificat parfaitement légitime non plus.
mahnsc
@mahnsc: Merci pour le rappel; J'en suis conscient :-) "Un certificat SSL auto-signé est-il un faux sentiment de sécurité?" "Oui, pour les raisons suivantes ..." semble utile, non? Donc, j'étais curieux de savoir pourquoi ce ne serait pas le cas: je pouvais apprendre quelque chose d'un point de vue opposé; d'un downvote, pas tellement.
Piskvor
1
@mahnsc: Bon point sur les autorités de certification compromises. Je ne dis pas que la liste racine des autorités de certification est figée et inébranlable - une sécurité parfaite n'existe pas; mais il faut beaucoup plus d'efforts pour rompre cela que de configurer un proxy SSL de capture sur une passerelle réseau.
Piskvor
1
@mahnsc: Je voulais dire qu'il est plus facile de configurer un proxy SSL et d'espérer que l'utilisateur clique sur les avertissements, que de configurer un proxy SSL et d'espérer qu'une fausse demande de certificat passe à travers le processus de vérification de l'AC. L'une ou l'autre est possible, comme nous l'avons vu, mais la première est beaucoup plus facile à faire (et plus difficile à détecter par la suite, car les utilisateurs de navigateur ne conservent généralement pas de piste d'audit).
Piskvor
8

Dépend. Si vous pensez que cela vous rend plus sûr, cela augmente vos risques lorsque vous choisissez de faire des choses plus risquées avec votre faux sentiment de sécurité. Si vous le traitez fonctionnellement équivalent à HTTP, alors je dirais que vous êtes légèrement plus sûr.

Sans SSL / HTTPS, toute personne disposant de wirehark sur votre réseau (ou le réseau local de toute personne se connectant) peut écouter et capturer de manière triviale le nom d'utilisateur / les mots de passe envoyés en texte brut.

Avec SSL auto-signé, ils ne peuvent pas simplement écouter, mais doivent maintenant truquer votre site, potentiellement modifier le DNS pour attaquer un homme au milieu (MITM). C'est toujours une menace, mais beaucoup plus difficile à réaliser.

L'autre problème avec l'utilisation de SSL auto-signé est que de nombreux navigateurs traitent les certificats auto-signés comme une menace de sécurité majeure et vous avertissent avant d'entrer (par exemple, chrome) avec une page rouge géante. http://www.sslshopper.com/article-ssl-certificates-in-google-chrome.html Cela pourrait être un inconvénient majeur.

Donc, l'essentiel est: si vous exécutez quelque chose qui n'a pas besoin d'être particulièrement sécurisé (par exemple, pas de données de carte de crédit, pas de numéros de sécurité sociale) et ne peut pas vous permettre un certificat approprié, un certificat auto-signé pourrait avoir un sens (pour empêcher les autres utilisateurs du réseau de renifler facilement leurs informations de connexion).

dr jimbob
la source
0

Cela dépend de ce que vous entendez par «sécurité» et de son ampleur.

Par exemple, votre navigateur est livré avec un ensemble d'autorités de certification acceptées par défaut. Cela signifie que tout certificat émis par cette autorité de certification est accepté par votre navigateur (jusqu'à ce qu'il corresponde au nom DNS). Maintenant, imaginez qu'un gouvernement maléfique possède une autorité de certification ou peut l'obliger à émettre un certificat pour le site que vous visitez. Ensuite, faire un MITM est très facile: ils peuvent proxy votre connexion, en envoyant à votre navigateur le certificat dont ils disposent, et votre navigateur l'acceptera, car il provient d'une autorité de certification "de confiance". Tant qu'ils ne sont pas DNS-transparents (qui est la base de MITM), c'est correct.

Ainsi, la "liste des AC acceptées" est fondamentalement un gros trou de sécurité, jusqu'à ce que l'un de ces AC coopère avec un gouvernement maléfique. Avoir son propre CA est bien mieux.

Bien sûr, vous pouvez le faire dans votre entreprise ou sur votre serveur domestique, car vous pouvez installer votre propre certificat CA sur le client, que vous contrôlez également. Dans un serveur public, vous ne pouvez pas traiter avec un utilisateur, lui demandant d'ajouter une exception ou d'ajouter votre certificat.

Cela dépend donc de ce que vous entendez par «sécurité» et de la portée. SI vous possédez les clients, SÛR, l'auto-signature est plus sûre, jusqu'à ce que vous installiez sur le client lui-même le certificat de votre propre autorité de certification.

Bien sûr, vous ne pouvez pas le faire sur un site Web public car vous ne possédez pas tous les clients. Ainsi, vous aurez un risque de différents comportements, ce qui n'est pas sûr.

user2402192
la source