Les versions de SSL/TLS n'Système.Net.WebRequest de soutien?
Maintenant que 3 de SSL a été trouvé à être vulnérables à la CANICHE attaque:
Les versions de SSL/TLS n'Système.Net.WebRequest utiliser lors de la connexion https Uri?
- Je utiliser WebRequest de se connecter à plusieurs 3ème partie de l'API. L'un d'eux a dit maintenant ils vont bloquer toute demande qui utilise le protocole SSL 3. Mais WebRequest est de la partie .Net framework (à l'aide d'4.5) de sorte qu'il n'est pas évident que la version qu'il utilise.
- Sera le WebRequest de secours de 3 de SSL si le serveur (ou de l'homme du milieu) en fait la demande?
- Si je ne me trompe pas, je pense que WebRequest regarde le certificat de sécurité du serveur que vous essayez de tirer vers le haut et utilise le cryptage schéma est sur le serveur web. Je ne pense pas que vous avez besoin de changer quoi que ce soit sur le côté client.
- J'espère que les propriétaires de l'API qui ont simplement dit qu'ils ne seront pas support du protocole SSL3 ont pensé à s'assurer que leur serveur ne demande pas que le client l'utilisation du protocole SSL3 🙂
- aucun moyen de dire à partir d'un cert si elle prend en charge SSL3 ou pas? Je ne vois pas toutes les propriétés liées à des versions.
- Je ne suis pas sûr que sur les autres navigateurs, mais je suis en utilisant google Chrome. Dans google Chrome, si vous allez à un site HTTPS (comme Wellsfargo.com par exemple), vous verrez un vert de serrure près de l'URL. Cliquez sur le verrou, puis cliquez sur l'onglet connexion, et il va vous montrer. Dans le cas de wellsfargo.com Chrome, dit "La connexion utilise le protocole TLS 1.0". IE et les autres navigateurs doivent montrer la même chose de similaire.
- Qui va vous montrer comment votre navigateur est de la connexion au serveur: cela va être un sous-ensemble des options que le serveur prend en charge. tous les détails à propos de ce que le serveur prend en charge | plus de détails sur ce que votre navigateur prend en charge
Vous devez vous connecter pour publier un commentaire.
Lors de l'utilisation du Système.Net.WebRequest votre application va négocier avec le serveur pour déterminer la plus haute TLS version de votre application et la prise en charge du serveur et de l'utiliser. Vous pouvez voir plus de détails sur la façon dont cela fonctionne ici:
http://en.wikipedia.org/wiki/Transport_Layer_Security#TLS_handshake
Si le serveur ne prend pas en charge le protocole TLS, il se replie sur SSL, il pourrait donc potentiellement de secours à SSL3. Vous pouvez voir toutes les versions .NET 4.5 soutient ici:
http://msdn.microsoft.com/en-us/library/system.security.authentication.sslprotocols(v=vs. 110).aspx
Afin d'éviter que votre application vulnérable à CANICHE, vous pouvez désactiver le protocole SSL3 sur la machine que votre demande est en cours d'exécution par suite de cette explication:
https://serverfault.com/questions/637207/on-iis-how-do-i-patch-the-ssl-3-0-poodle-vulnerability-cve-2014-3566
SecurityProtocolType.Tls
(et, par conséquent, TLS 1.0) dans .net framework 3.5 ou plus basTLS
était quelque chose qui puisse réellement être mises en œuvre à l'OS/machine de niveau? N'est-ce pas, où le réel le trafic HTTP présentes? Donc, je ne pense pas que cela a du sens pour essayer de dire à votre code pour utiliser TLS qui est vraiment déterminée par le système d'exploitation.C'est une question importante. Le protocole SSL 3 (1996) est irrémédiablement brisé par le Caniche attaque publié 2014. L'IETF ont publié "SSLv3 ne DOIVENT PAS être utilisées". Les navigateurs Web sont amerrissage forcé il. Mozilla Firefox et Google Chrome l'ont déjà fait.
Deux excellents outils pour la vérification de la prise en charge du protocole dans les navigateurs sont SSL du Laboratoire de test client et https://www.howsmyssl.com/ . Ce dernier ne nécessite pas de Javascript, donc vous pouvez essayer de .NET HttpClient:
Le résultat est accablant:
C'est concernant. C'est comparable à 2006 Internet Explorer 7.
À préciser exactement quels sont les protocoles HTTP client prend en charge, vous pouvez essayer la version spécifique de serveurs de test ci-dessous:
Je suis en utilisant .NET Framework 4.6.2. J'ai trouvé HttpClient prend en charge uniquement les 3 de SSL et TLS 1.0. C'est au sujet de. Cela est comparable à 2006 Internet Explorer 7.
Mise à jour: Il tourne HttpClient prend en charge TLS 1.1 et 1.2, mais vous devez les activer manuellement à
System.Net.ServicePointManager.SecurityProtocol
. Voir https://stackoverflow.com/a/26392698/284795Je ne sais pas pourquoi il utilise mal les protocoles de hors-the-box. Ça me semble être une mauvaise configuration de choix, revient à un important bug de sécurité (je parie que beaucoup d'applications ne modifiez pas la valeur par défaut). Comment peut-on signaler?
J'ai aussi mis une réponse, mais l'article a @Colonel de Panique de la mise à jour se réfère à l'suggère forcer TLS 1.2. Dans l'avenir, lorsque TLS 1.2 est compromise ou tout simplement remplacé, avoir votre code collé à TLS 1.2, sera considéré comme une carence. La négociation TLS1.2 est activé dans .Net de 4,6 par défaut. Si vous avez l'option de mise à niveau de votre source .Net de 4,6, je vous recommande fortement de changement au fil du forçage TLS 1.2.
Si vous ne force TLS 1.2, fortement envisager de laisser un certain type de fil d'ariane qui va enlever de force si vous mettez à niveau à l'4.6 ou supérieur cadre.