web-dev-qa-db-fra.com

Pourquoi Windows 98 / IE5 ne peut-il pas se connecter aux sites HTTPS en 2015?

Récemment, j'ai trouvé un ancien CD d'installation pour Windows 98 Deuxième Édition, et à la recherche d'un petit coup de nostalgie, je l'ai installé dans VirtualBox. Win98SE est livré avec IE 5.0, et la navigation sur le Web avec ce navigateur a été une expérience aussi brisée que vous pouvez l'imaginer.

J'ai remarqué que, quoi que j'aie essayé, je n'arrivais pas à faire en sorte que IE se connecte à n'importe quel site any HTTPS. Et ça m'a fait me demander pourquoi. Tous les certificats d'autorité de certification de confiance fournis avec eux sont-ils arrivés à expiration? Tous les algorithmes TLS/SSL par défaut ont-ils été supprimés au cours des 16 dernières années? Avait-il besoin du IE High Encryption Pack (wow, ça fait éternellement que j'y ai pensé).

Je suis curieux de savoir si cela affecterait d'autres systèmes d'exploitation de cette époque (Mandrake 6!) Ou si le problème principal est spécifique à Windows.

34
smitelli

Le problème principal est probablement qu’un IE de cette époque voudrait prendre en charge SSL 2.0, et, par conséquent, envoie son message initial (ClientHello) au format SSL 2.0, qui a à peu près rien en commun avec le ClientHello des versions ultérieures du protocole (SSL 3.0 et toutes les versions TLS). Cela a permis au navigateur de se connecter à un serveur qui connaissait SSL 2.0 mais rien d'autre, tandis que le ClientHello documente toujours que le client est prêt à utiliser quelque chose de plus moderne.

Cependant, les serveurs modernes ne prennent plus en charge le format SSL-2.0 ClientHello. Il y a eu une période transitoire pendant laquelle ils ont toujours accepté ce format (même s'ils ne permettaient pas à la connexion d'utiliser réellement SSL 2.0), mais maintenant, ils ont complètement abandonné le support. Notamment, le format SSL-2.0 ClientHello n'a pas de place pour des extensions comme SNI, ce qui explique l'envie d'abandonner un tel support.

Les autres problèmes sont les suivants:

  • IE 6.0 prend en charge TLS 1.0 mais il est désactivé par défaut. Je ne sais pas si IE 5 aurait supporté TLS 1.0, mais en tout cas il n'aurait pas été activé par défaut. Cependant, de nombreux serveurs modernes rejettent également SSL 3.0 (à cause de POODLE , comme l'a noté @etherealflux).

  • Le code client ne connaîtra rien d'AES, car il date d'avant la standardisation de cet algorithme. Il essaiera d'utiliser des suites de chiffrement basées sur RC2, 3DES, éventuellement RC4 (cela nécessiterait une vérification car RC4 était la propriété du némésis d'IE, Netscape, donc peut-être IE 5 ne l'utiliserait pas) Ces algorithmes ne sont pas très populaires parmi les administrateurs de serveur de nos jours ...

  • Les sites modernes utilisent des clés cryptographiques assez volumineuses. En règle générale, RSA avec des clés d'au moins 2048 bits. Un ancien Windows + IE peut être plus limité dans la taille des clés RSA qu'il peut gérer. En particulier, un Windows + IE qui respecterait les règles d'exportation américaines sur la cryptographie de l'ère antérieure à 2000 pourrait être limité à une taille maximale de 1024 bits pour les clés RSA. La même combinaison refuserait également d'utiliser 3DES ou quoi que ce soit avec une clé symétrique supérieure à 56 bits, alors qu'aucun serveur décent de 2015 n'accepterait quoi que ce soit de moins de 128 bits.

Pour les systèmes basés sur Linux, il n'y a pas d'implémentation SSL centrale (il y a souvent une bibliothèque OpenSSL, mais pas quelque chose d'aussi omniprésent que SChannel et CryptoAPI de Microsoft). Ainsi, chaque navigateur aura ses propres règles. Avant 2000, cela aurait signifié Nestcape Navigator (celui qui se sépare lorsqu'il voit quoi que ce soit en UTF-8 ...). Peut-être qu'un ancien navigateur basé sur KDE pourrait faire du SSL? Dans ce cas, il utiliserait probablement OpenSSL et que devrait toujours pouvoir se connecter à certains serveurs, avec la bonne configuration (en particulier si on évite SSL- Format 2.0 pour le ClientHello).

37
Thomas Pornin

Il pourrait y avoir plus de raisons, je vais en énumérer quelques-unes qui me sont venues à l'esprit:

  1. Lors de l'établissement de la connexion SSL/TLS (la prise de contact), le client envoie une liste de suites de chiffrement au serveur. La responsabilité du serveur est alors de sélectionner celui qui sera utilisé. En cas d'absence de chiffrement approprié, la connexion est interrompue.
  2. SNI - Extension d'indication de nom de serveur. AFAIK ce n'est pas pris en charge pour IE6 et plus tôt sur XP.

Pour être honnête, je ne sais même pas si IE5 prend en charge TLS.

6
bayo

Vous avez très probablement raison. La plupart des sites Web interdisent désormais l'utilisation de protocoles SSL obsolètes - rappelez-vous que SSL v3.0 faisait partie de l'attaque CANICHE , entre autres! Si votre navigateur ne prend en charge que les protocoles désactivés, vous n'irez pas très loin.

Wikipédia a un grand tableau sur sa page sur SSL/TLS , montrant quels protocoles sont pris en charge par défaut sur différentes versions de navigateur. Plus important encore, Internet Exploder 6 ne prend en charge que TLS 1.0, et il est désactivé par défaut. Cela signifie que votre navigateur essaie probablement d'utiliser SSL v3.0.

Vous devriez pouvoir vérifier l'état de vos certificats de confiance - après tant d'années, je espérons ils ont expiré. Le système d'exploitation est si ancien que les recherches Google ne donnent pas beaucoup de conseils sur la façon de le faire, cependant!

2
etherealflux

La cause probable pourrait être que peu de serveurs prennent en charge les conditions de chiffrement qu'IE5 peut utiliser. Au moment de la sortie de votre IE, il ne supportait que SSL et non TLS.

SSL 1.0 n'a jamais été rendu public. SSL 2.0 et 3.0 sont depuis obsolètes. Même si des serveurs sauvages pourraient les prendre en charge, ils ne seront probablement pas trouvés sur les serveurs des sites Web les plus populaires.

La norme TLS 1.0 n'a été définie qu'en 1999. Et Microsoft est connu depuis longtemps pour ne pas avoir adopté les normes en temps opportun. Vous avez probablement IE 5.0 ou 5.01 (édition de correction de bogue) empaqueté dans votre système d'exploitation qui n'a aucun cryptage. La version avec cryptage était 5.5. Il n'est pas empaqueté avec votre version de l'OS mais compatible. Cependant, vous ne serez pas libre et en clair pour l'instant. Il ne prend en charge que 128 bits TLS 1.0 qui IE désactive par défaut.

De plus, les certificats EV, SHA-2 et ECDSA ne sont pas pris en charge. Il sera extrêmement rare de trouver un serveur dans la nature doté d'un certificat 128 bits avec TLS 1.0 et la combinaison de chiffrement de l'ère IE5.

2
Bacon Brad

Installez Opera compatible avec Windows 98, j'utilise 10.10.

Accédez à la barre de menu.

Outils-> Préférences => onglet Avancé

Sélectionnez Sécurité, puis le bouton Protocoles de sécurité ....

La fenêtre contextuelle comporte une case à cocher pour Activer SSL 3.

Succès! Le site de Google utilisant HTTPS fonctionne à nouveau!

2
Leslie