Question

J'ai un programme client qui parle à un serveur Web via une connexion SSL (https). Comment est-ce sécuritaire connexion? Je l'ai acheté un certificat SSL installé sur mon serveur web, donc je crois comprendre que même si quelqu'un attemps un homme-in-the-middle entre mon client et mon serveur, ils ne serait pas le certificat? Est-ce vrai?

Ainsi, par exemple si elles ont tenté de rediriger le nom d'hôte www.myserver.com à un IP dont ils sont propriétaires, les https seront toujours pas car la connexion signale une source non fiable sans le certificat installé?


Je voulais juste souligner que mon programme est un fichier binaire, pas une page Web qu'un utilisateur verra à travers un navigateur. Par conséquent, ils ne peuvent pas simplement appuyer sur « accepter SSL non approuvé » et continuer. Mon binaire est codé pour sortir si on détecte une connexion SSL non sécurisée. Étant donné que, est-il encore possible pour quelqu'un « au milieu » pour rediriger le trafic vers quelque part et extraire les données chiffrées?

Merci!

Était-ce utile?

La solution

Si le « man-in-the-middle » se trouve en fait sur l'ordinateur client (pensez à un virus, cheval de Troie ou autres logiciels malveillants), ils peuvent lire / modifier quoi que ce soit en cours sur cette connexion. Cependant, entre le client et le serveur, la connexion est tout à fait sûre, à condition que votre programme client vérifie la validité du certificat SSL.

Autres conseils

Si c'est une personne (pas de code) de choisir ou non d'accepter le certificat SSL, l'erreur qui résulte du changement de nom d'hôte peut pas tout arrêter, la personne peut clic droit passé cette boîte d'avertissement.

Cela dépend de la façon dont vous validez le certificat sur le côté client et ce que les CA que vous avez choisi de faire confiance dans le processus de validation.

Si l'une des autorités de certification vos fiducies d'application client ont délivré un certificat au même nom d'hôte, ce certificat peut être utilisé dans une attaque MITM. (Et ce n'est pas tout à fait inconnu que les certificats ont été délivrés à la « mal » personnes) .

Qu'est-ce que les CA sont utilisés dans le processus pour déterminer si oui ou non une signature est valide dépend de votre bibliothèque SSL et comment vous l'avez utilisé.

i.e.. dans le cas des navigateurs, Firefox est livré avec un ensemble de certificats CA auprès de fournisseurs SSL plus ou moins bonne réputation que vos fiducies de navigateur par défaut.

Windows a Similairement un magasin de certificats qui fiducies IE par défaut et je devine que d'autres applications à l'aide de Microsofts SSL libraraies soit auront la possibilité d'utiliser ce magasin de certificats ou de l'utiliser par défaut.

Oui, vous êtes généralement à l'abri des attaques MitM lors de l'utilisation de SSL, qui a été conçu (et révisé) pour l'empêcher.

Pour être clair, votre certificat SSL est l'information du public - et n'a pas de valeur de secret. Votre serveur donnera dehors à tout client qui dit Bonjour. Il est la clé privée correspondant à la clé publique dans le certificat qui doit être conservé, bien privé.

Pour la sécurité maximale de la connexion, vous devez limiter étroitement les certificats qui sont acceptables pour le client - en fait, vous pouvez même limiter à une correspondance exacte en stockant le certificat lui-même (ou le hachage du certificat) dans le client. Dans ce cas, vous ne se soucient même pas de nom d'hôte correspond - et vous éliminez même la chance miniscule qu'un intermédiaire hostile a réussi à obtenir un certificat valide de votre CA avec votre nom d'hôte, et a subverti DNS

.

Les données transférées entre le serveur et le client sont cryptées.

  

Ainsi, par exemple si elles ont tenté de   rediriger le nom d'hôte www.myserver.com   à un IP dont ils sont propriétaires, le https sera   encore échouer parce que la connexion est   signaler une source non fiable sans   certificat installé?

Oui. Mais toujours le message d'avertissement peut être ignoré par l'utilisateur s'il ne se préoccupe de la sécurité. Seule la communication est sécurisée et en toute sécurité. S'il y a un programme client (virus) qui peuvent interpréter les données reçues et faire tout ce qu'il veut. Donc, de son mieux pour éduquer le client (utilisateur) sur les questions de sécurité et de l'importance d'avoir un PC « sûr ».

Si les données transférées si elle est très confidentielle, vous pouvez ajouter une autre couche de sécurité en ajoutant un champ digest (formé avec les données à transférer avec une clé secrète) et le transmettre au client. Le client peut alors créer une nouvelle fois la digestion (avec les données reçues et clé secrète), puis le comparer à un décalage.

S'il y a une discordance des données a été modifiée alors qu'il était en cours de transfert.

Vous confondez les questions:

  1. sécurité au niveau du transport, qui fournit SSL; et
  2. l'authentification du client, qui SSL ne fonctionne pas.

En fonction de votre application, vous voudrez peut-être envisager d'utiliser quelque chose comme un tunnel SSH à la place. Cela fournit à la fois Crypto fort pour protéger le transport, et connectez-vous également des informations d'identification par l'utilisation de Crypto clé publique.

Vous pouvez générer automatiquement une nouvelle clé publique pour chaque programme client et ajouter à votre liste des clés autorisées pour la connexion. Par conséquent, seuls les clients que vous avez autorisés peuvent jamais accès gagner.

La plupart des clients SSH échouera automatiquement quand ils rencontrent un serveur avec un autre clé publique de ce qu'ils attendent comme hôtes connus. Vous pouvez pré-configurer ce être votre propre serveur clé publique.

Tls ne fournir pour l'authentification du client dans la poignée de main

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top