Question:
Pourquoi les certificats auto-signés ne sont-ils pas approuvés et existe-t-il un moyen de les rendre fiables?
Praz
2016-02-04 18:46:16 UTC
view on stackexchange narkive permalink

J'ai créé localement un certificat d'autorité de certification racine. J'ai utilisé le certificat CA pour signer le certificat IA et j'ai utilisé le certificat IA pour signer le certificat serveur. Lorsque j'essaie d'accéder au serveur local qui utilise le certificat de serveur, cela me donne un avertissement de risque de sécurité. Y a-t-il un moyen de faire en sorte qu'il ne donne pas d'avertissement?

Tout ce que je veux savoir, c'est, est-il possible de rendre le certificat auto-signé fiable?

Un certificat auto-signé, c'est comme créer un badge doré dans votre maison, puis le montrer à des gens qui disent que vous êtes un policier. Peut-être que vous pouvez réussir ce tour avec les membres de votre famille qui acceptent que vous soyez responsable, mais si vous voulez être un vrai, public, un agent de police, vous devez être ** confiance par une autorité centrale ** que tout le monde d'autres fiducies, comme le gouvernement de votre ville ou de votre état. Sinon, vous vous faites passer pour un policier et il serait sage de se méfier de vous.
@CristianTM: Souvent, lorsque quelqu'un "STFW" pour une réponse à une question, StackExchange est le meilleur résultat - ce qui est génial et en dit long sur StackExchange! Je ne pense pas que ce soit une raison légitime de disqualifier une question d'être publiée ici. La réponse de BadSkillz ci-dessous est simple, utile et peut conduire cette page même en haut des résultats de recherche de tout le monde sur le sujet - ET il lui a fallu autant de temps pour la produire que pour publier * votre * commentaire. :-)
«Auto-signé» est orthogonal à «fiable». Tous les certificats de mon magasin de confiance sont auto-signés, qu'en est-il du vôtre? La question est donc simplement "comment puis-je dire à mon navigateur de faire confiance à un certificat non approuvé auparavant?".
C'est pourquoi nous n'acceptons pas les certificats auto-signés:> Veuillez excuser l'absence de Juan de l'école hier. >> -Mère d'Epstein. (Si vous n'êtes pas familier avec le programme TV * Welcome Back, Kotter *, vous pourriez ne pas obtenir la référence.)
@ToddWilcox très belle, explication au point. Je peux finir par utiliser celui-là. \ * yoink \ *
@kubanczyk - Il pouvait obtenir la confiance de son certificat de serveur par le navigateur en le plaçant directement dans le magasin de confiance, en insérant le certificat IA ou en insérant le certificat de l'autorité de certification. En général, il voudrait mettre l'AC, mais le le magasin de confiance ne doit pas être uniquement des certificats auto-signés; avec la signature croisée, les certificats peuvent être à la fois des racines auto-signées et signés par un autre certificat.
@ToddWilcox C'est la même chose que "l'autorité centrale", sauf que nous faisons tous confiance aux autorités au lieu de nous contenter de la famille proche. Au lieu d'un badge autocollant, pensez-y de cette façon: c'est l'équivalent du gamin le plus cool d'une soirée qui vous invite et dit à tout le monde "il est cool" parce que vous l'avez payé pour le faire. Il n'y a pas d'autorité, de confiance, etc. au-delà du nom de l'enfant le plus cool ciselé aux côtés de quelques autres enfants cool sur la roche de granit monolithique qui est les authentifications SSL. Comodo? Allez ... tu te souviens comment ils étaient dans les années 90? Ils sont toujours: des spammeurs de télévendeurs SSL implacables et incessants. Pas de confiance;)
@ToddWilcox Une analogie un peu approximative qui implique qu'il y a quelque chose de intrinsèquement illégal ou malhonnête dans les certificats auto-signés. Il n'y en a pas. Un certificat auto-signé ne peut pas être autre chose que ce qu'il est. Un certificat signé par quelqu'un qui n'a pas gagné la confiance du fabricant du système d'exploitation, du fabricant du navigateur ou du créateur de l'application.
Remarque: si vous essayez d'obtenir un certificat valide pour un domaine public, vous pouvez utiliser letsencrypt. Ils sont enfin en version bêta publique, j'ai découvert cela hier soir en travaillant sur le serveur d'un client et j'ai mis en place 4 à 5 domaines avec des certificats en quelques minutes. C'est gratuit et open source - https://letsencrypt.org/
@ToddWilcox Ce serait une excellente _ réponse _...
Vous pouvez également ignorer la partie CA, créer un certificat de serveur auto-signé et le distribuer à tous les navigateurs qui devraient lui faire confiance.Cela supprime en fait beaucoup de complications et de confiance implicite (cela ne s'adapte tout simplement pas très bien)
Huit réponses:
BadSkillz
2016-02-04 18:51:58 UTC
view on stackexchange narkive permalink

Vous devez importer le certificat racine dans le magasin de confiance du navigateur. Une fois que le navigateur sait que vous faites confiance à ce certificat racine, tous les certificats signés par celui-ci apparaîtront comme étant de confiance.

Notez que cela ne rendra la connexion fiable que pour vous, tous les autres qui n'ont pas le certificat racine installé recevra toujours une erreur.

Notez que, selon la façon dont le certificat est configuré et comment vous l'ajoutez, cela peut permettre à votre certificat auto-signé de signer des certificats pour n'importe quel domaine. (Ce n'est * pas * quelque chose que vous voulez.)
@duskwuff: En fait, il _peut_ être exactement ce que vous voulez - si vous voulez mettre en place votre propre autorité de certification, ce que de nombreuses entreprises font pour leur réseau interne. Ce n'est probablement pas le cas ici, cependant.
@duskwuff, c'est exactement comment fonctionne un proxy https, tel que BlueCoat. L'organisation achète le proxy, puis installe le certificat auto-signé du proxy dans le magasin racine approuvé de chacun des ordinateurs de l'organisation. Le proxy met ensuite en MITM toutes les connexions, y compris les connexions cryptées, pour s'assurer que les «mauvaises choses» ne sont pas autorisées à passer par le proxy.
sethmlarson
2016-02-04 18:52:10 UTC
view on stackexchange narkive permalink

Les certificats auto-signés ne sont pas intrinsèquement approuvés par votre navigateur car un certificat lui-même ne forme aucune confiance, la confiance vient d'être signée par une autorité de certification à laquelle TOUT LE MONDE fait confiance. Votre navigateur ne fait tout simplement pas confiance à votre certificat auto-signé comme s'il s'agissait d'un certificat racine. Pour que votre navigateur accepte votre certificat, accédez aux configurations de votre navigateur et ajoutez le certificat en tant que certificat racine.

La meilleure façon d'obtenir un certificat auto-signé de confiance est de passer par une cérémonie de clé, qui est essentiellement un grand événement public où tous les cryptographes et experts en sécurité se réunissent pour assister à une autorité de certification racine générer leur paire de clés et se déclarer une autorité de certification racine. Tout est enregistré: vidéo, qui est tout le monde et ce que chacun fait par les avocats. La clé privée est divisée en plusieurs parties différentes et stockée séparément dans des coffres-forts généralement après la signature d'un seul certificat qui est utilisé comme intermédiaire pour signer d'autres certificats. Vous pouvez en savoir plus sur la procédure typique si vous le souhaitez. Bien sûr, vous devez disposer d'une sécurité de pointe, à la fois technologique et physique, pour ce faire et que quiconque souhaite utiliser ou faire confiance à votre autorité de certification racine. Après cela, vos certificats peuvent être inclus dans les distributions de navigateur et peuvent ensuite être utilisés par le grand public pour créer des chaînes de confiance de certificats.

La partie «tout le monde fait confiance» de la déclaration ci-dessus est la clé de l'échec de l'ensemble du système. À mon avis, toute l'infrastructure TLS est construite sur un château de cartes et personne ne veut l'admettre.
@JonTrauntvein Je suis d'accord avec cela (et d'autres sont prêts à l'admettre) qu'il y a certaines parties de TLS qui ne sont pas bonnes. Le premier étant le système de révocation de certificat qui ne fait essentiellement rien, car la plupart des navigateurs ignorent si un certificat est révoqué ou non et deuxièmement, certaines autorités de certification des États-nations ** ne suivent pas ** les consignes de sécurité ci-dessus mais sont toujours fournies avec toutes les principales navigateurs pour des raisons politiques commerciales.
Je dirais que "la confiance vient d'être signée par une autorité de certification en qui votre fabricant de navigateur fait confiance et vous faites confiance à votre fabricant de navigateur".S'il existe des différences entre vous et le fabricant de votre navigateur, vous pouvez ajouter / supprimer des autorités de certification racine à / de votre navigateur.
BlueRaja - Danny Pflughoeft
2016-02-04 23:41:22 UTC
view on stackexchange narkive permalink

En fait, les certificats auto-signés peuvent être sécurisés, mais pas sous le modèle que nous utilisons actuellement.


Sous l'autorité de certification (autorité de certification ) que tout le monde utilise actuellement, l'objectif du certificat signé par une autorité de certification de confiance est de fournir une authentification.

Lorsque nous obtenons un certificat, tout ce que nous voyons vraiment est 1 et 0 vient du jack dans le mur; nous n'avons aucune idée d'où viennent ces 1 et 0. Cependant, comme le certificat est signé par une autorité de certification - ce que personne d'autre que cette autorité de certification ne peut faire - et parce que nous faisons confiance à l'autorité de certification pour vérifier l'identité du propriétaire du certificat, nous sommes convaincus que le certificat provient de la personne à qui il prétend.

Bien sûr, si l ' autorité de certification est compromise ou ne vérifie pas correctement le propriétaire, tous les paris sont désactivé.


Cependant, il existe un autre modèle dans lequel les certificats auto-signés fournissent l'authenticité. C'est ce qu'on appelle le modèle du notaire .

Essentiellement, plutôt que de faire confiance à une seule autorité de certification, nous distribuons la confiance à un nombre quelconque de notaires . Ces notaires parcourent Internet à la recherche de certificats, gardant un cache de tous les certificats qu'ils ont vus. Lorsque vous visitez un site pour la première fois et que vous obtenez le certificat, vous demandez à un certain nombre de notaires répartis dans le monde entier quel était le dernier certificat qu'ils ont vu. S'ils ne sont pas d'accord avec ce que vous voyez, vous pourriez faire partie d'une attaque de type "man-in-the-middle".

Dans ce modèle, les certificats auto-signés sont parfaitement sécurisés, à condition que nous supposions le serveur n'est pas immédiatement compromis avant qu'un notaire puisse voir son certificat.


Le modèle du notaire en est encore à ses balbutiements, et il est peu probable qu'il reprenne jamais le modèle CA (en fait, ce n'est pas nécessaire - ils peuvent être utilisés en tandem) . Le projet le plus prometteur à ce jour est Convergence.io, qui dispose d'un plugin pour Firefox.

+1 pour expliquer un meilleur modèle au lieu de simplement réitérer le schéma d'authentification (connu sous le nom de «modèle de profit») avec lequel nous nous permettons actuellement de rouler. Dieu interdit aux CA de perdre pour faire ... à peu près rien. (GlobalSign -> 250 $ / an DV -> ... ROFL)
Il s'agit essentiellement d'un algorithme d'authentification distribué classique dans lequel tant qu'un certain seuil de nœuds fait confiance à un certificat, le réseau lui fait confiance. Il y a encore beaucoup de recherches en cours dans ce domaine et il est intéressant si vous vous intéressez à ce genre de choses.
Giacomo1968
2016-02-05 11:25:34 UTC
view on stackexchange narkive permalink

Réponse plus courte.

Beaucoup de réponses ici, mais aucune ne semble aller droit au but: sans un tiers neutre et reconnu - comme une autorité de certification - vérifiant la propriété du certificat, un certificat est sans signification.

Réponse plus longue.

Pour mieux comprendre, lorsque vous faites quelque chose comme la création d'une connexion HTTPS, vous avez la chaîne suivante:

  • Un client Web navigateur faisant la demande au serveur.
  • Le serveur Web distant renvoyant les données au client.
  • Et un certificat HTTPS autorisé par un tiers neutre qui garantit que le serveur est qui c'est le cas et le chiffrement est valide à cause de cela.

Un certificat auto-signé est intrinsèquement non fiable car n'importe qui peut générer un certificat auto-signé . Toute personne incluant une entité qui prétend délibérément être quelque chose / quelqu'un qu'elle n'est pas. Avec un certificat auto-signé, il n'y a tout simplement pas de tiers de confiance dont les procédures humaines de base sont définies pour indiquer simplement: «D'accord, ce domaine a un certificat que nous leur avons émis et vous pouvez donc leur faire confiance. Nous disons qu’ils sont en fait le domaine qu’on prétend être et non un imposteur. »

Et comme n'importe qui dans le monde peut créer un certificat auto-signé par lui-même, son utilisation présente des problèmes de confiance inhérents. Ce qui rend un certificat valide a très peu à voir avec la technologie profonde ou les techniques de chiffrement , mais ce qui le rend valide, c'est un processus centré sur un tiers neutre et reconnu validant un procédure d'utilisation et les fabricants de navigateurs respectant ces procédures.

En fin de compte, une paire de clés de chiffrement est une pile de bits et d'octets totalement dénuée de sens sans l'application des processus et des procédures qui les entourent .

Benoit Esnard
2016-02-05 19:54:05 UTC
view on stackexchange narkive permalink

Les certificats auto-signés ne sont pas fiables, car n'importe qui peut en créer un.

Un attaquant effectuant une attaque MITM pourrait facilement remplacer n'importe quel certificat par un certificat auto-signé one et usurper l'identité de tout site Web sur lequel vous naviguez, même si vous utilisez HTTPS.

C'est pourquoi nous utilisons des autorités de certification de confiance pour nous assurer que les certificats ne peuvent pas être falsifiés.

jwilleke
2016-02-05 21:12:50 UTC
view on stackexchange narkive permalink

Nous avons tous besoin d'un peu de contexte.

Il y a une différence entre "non fiable" et sécurisé.

Et "Trusted" n'implique pas nécessairement sécurisé (ou authentique)

Un certificat auto-signé sur un réseau isolé avec un seul serveur et un seul client est probablement plus sécurisé que n'importe quel certificat "de confiance".

Et "de confiance" implique UNIQUEMENT qu'un certificat d'autorité de certification a été ajouté au "Trusted Certificate Store" pour le client. Si le certificat d'autorité de certification a été ajouté pendant une session de "phishing", alors il n'y a rien de sécurisé à propos du certificat.

Je ne suis pas un fan que il y a souvent des centaines d'autorités de certification "de confiance" placées dans le client par "d'autres", mais je ne connais pas non plus de meilleure approche.

Les autorités de certification doivent certainement effectuer un meilleur processus de "vérification" ( en général) qu'ils ne le font actuellement avant de délivrer un certificat.

Gryzorz
2016-02-04 20:22:51 UTC
view on stackexchange narkive permalink

Toute application doit recevoir la liste des "certificats racine" pour être approuvée.

Dans le cas d'un navigateur, il existe une liste définie qui est fournie par défaut avec n'importe quel navigateur, mais cette liste ne le fait pas contiennent votre certificat.

Imaginez que vous n'ayez pas besoin de donner la liste des certificats en lesquels vous avez confiance, alors n'importe qui pourrait configurer un site Web https qu'un navigateur dans le monde accepterait sans avertissement du risque de sécurité.

D'un autre côté, cela fonctionnerait immédiatement si votre certificat CA est lui-même signé par l'un des certificats de confiance par défaut ... mais vous devez payer.

Il y a suffisamment de réponses pour savoir comment ajouter un certificat CA à la liste de confiance, je vais donc sauter cette partie.

Dio Phung
2017-06-28 12:24:37 UTC
view on stackexchange narkive permalink

Si vous souhaitez le faire pour les navigateurs, voici les étapes:

Pour Chrome 58+: - Paramètres -> Afficher les paramètres avancés -> Gérer les certificats -> Importer -> parcourir -> choisissez Confiance Autorités de certification racine -> cliquez sur Oui dans la fenêtre contextuelle.



Ce Q&R a été automatiquement traduit de la langue anglaise.Le contenu original est disponible sur stackexchange, que nous remercions pour la licence cc by-sa 3.0 sous laquelle il est distribué.
Loading...