web-dev-qa-db-fra.com

Pourquoi les certificats auto-signés ne sont-ils pas fiables et existe-t-il un moyen de les rendre fiables?

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

Tout ce que je veux savoir c'est, est-il possible de faire confiance au certificat auto-signé?

42
Praz

Vous devez importer le certificat racine dans le magasin de clés de confiance pour le navigateur. Une fois que le navigateur sait que vous faites confiance à ce certificat racine, tous les certificats signés par celui-ci s'affichent comme approuvés.

Notez que cela ne fera que la connexion approuvée pour vous, toute autre personne n'ayant pas le certificat racine installé recevra toujours une erreur.

52
BadSkillz

Les certificats auto-signés ne sont pas intrinsèquement approuvés par votre navigateur car un certificat lui-même ne forme aucune approbation, l'approbation provient de la signature d'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 un Key Ceremony , qui est fondamentalement 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 clé. jumeler et se déclarer CA racine. Tout est enregistré: la vidéo, qui est tout le monde et ce que tout le monde 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 lire sur le procédure typique si vous le souhaitez. Bien sûr, vous devez disposer d'une sécurité de pointe, à la fois technologique et physique, et que quiconque souhaite utiliser ou faire confiance à votre autorité de certification racine. Après cela, vos certificats peuvent être inclus dans les distributions du navigateur et peuvent ensuite être utilisés par le grand public pour créer des chaînes de confiance de certificats.

38
sethmlarson

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


Dans le cadre du modèle de CA (autorité de certification) largement répandu que tout le monde utilise actuellement, le but du certificat signé par une CA de confiance est de fournir une authentification.

Lorsque nous obtenons un certificat, tout ce que nous voyons vraiment, ce sont les 1 et les 0 venant du jack dans le mur; nous n'avons aucune idée d'où viennent ces 1 et 0. Cependant, parce que le certificat est signé par une autorité de certification - quelque chose que personne au monde 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 espérons que le certificat provient de qui il prétend.

Bien sûr, si le CA est compromis ou ne vérifie pas correctement le propriétaire , tous les paris sont désactivés.


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

Essentiellement, plutôt que de faire confiance à une seule autorité de certification, nous distribuons la confiance à un nombre illimité 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 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 d'homme au milieu.

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


Le modèle notaire est encore à ses balbutiements, et il est peu probable qu'il prenne le contrôle du modèle CA (en fait, il n'a pas à - ils peuvent être utilisés en tandem). Le projet le plus prometteur jusqu'à présent est Convergence.io , qui dispose d'un plugin pour Firefox.

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 n'a pas de sens.

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 navigateur Web client faisant la demande au serveur.
  • Le serveur Web distant renvoyant des données au client.
  • Et un certificat HTTPS autorisé par une tierce partie neutre qui atteste que le serveur est qui il est et que 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 comprenant 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 simplement déclarer: "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 que l'on prétend être et non un imposteur. "

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

À la fin de la journée, 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.

8
JakeGould

Les certificats auto-signés ne sont pas fiables car tout le monde peut en créer un.

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

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

3
Benoit Esnard

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 Secure (ou Authentic)

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 "magasin de certificats de confiance" pour le client. Si le certificat de l'autorité de certification a été ajouté pendant une session de "phishing", le certificat n'a rien de sécurisé.

Je ne suis pas fan qu'il y ait 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.

Il est certain que les autorités de certification doivent effectuer un meilleur processus de "vérification" (en général) qu'elles ne le font actuellement avant d'émettre un certificat.

3
jwilleke

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 vient par défaut avec n'importe quel navigateur, mais cette liste ne contient pas votre certificat.

Imaginez que vous n'ayez pas besoin de fournir la liste des certificats auxquels vous faites confiance, alors n'importe qui serait en mesure de configurer un site Web https qu'un navigateur dans le monde accepterait sans avertir du risque de sécurité.

D'un autre côté, cela fonctionnerait tout de suite 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 sur la façon d'ajouter un certificat CA à la liste de confiance, je vais donc ignorer cette partie.

2
Gryzorz

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 Autorités de certification racines de confiance -> cliquez sur Oui dans la fenêtre contextuelle.

0
Dio Phung