Détecter la compatibilité TLS du navigateur

nous avons un site web SSL où L'hôte a récemment désactivé des protocoles SSL plus anciens comme TLS 1.0 et inférieur. Selon le navigateur, le visiteur du site reçoit une page blanche ou un message d'erreur cryptique lorsqu'il visite le site si le navigateur qu'il utilise ne supporte pas au moins TLS 1.1.

j'espérais créer une page de renvoi qui ne se trouve pas sur le port SSL et où je pourrais détecter la capacité du navigateur si elle supporte TLS 1.1 et au-dessus. Si ça ne marche pas alors je veux leur montrer un message convivial pour mettre à niveau leur navigateur ou utiliser un autre navigateur.

est-ce quelque chose qui peut être accompli en utilisant la bibliothèque javascript côté client? Si oui, que dois-je utiliser.

Merci.

20
demandé sur Aamir 2015-06-23 03:20:18

5 réponses

Vous pouvez utiliser the API fourni par Comment est mon SSL?.

dans l'exemple suivant, je coche le tls_version. Vérification de l' given_cipher_suites peut aussi être une bonne idée.

<script>
window.parseTLSinfo = function(data) {
  var version = data.tls_version.split(' ');
  console.log(
    version[0] != 'TLS' || version[1] < 1.2
    ? 'So bad! Your browser only supports ' + data.tls_version + '. Please upgrade to a browser with TLS 1.2 support.'
    : 'All OK. Your browser supports ' + data.tls_version + '.'
  );
  console.log(data);
};
</script>
<script src="https://www.howsmyssl.com/a/check?callback=parseTLSinfo"></script>
29
répondu Oriol 2016-11-15 16:50:32

il y a au moins deux sites Web qui vérifieront les capacités du navigateur pour vous, y compris SSL Labs (https://www.ssllabs.com/ssltest/viewMyClient.html) et HowsMySSL (https://www.howsmyssl.com/). HowsMySSL dispose également d'une API agréable qui peut être facilement vérifiée à partir de JavaScript.

3
répondu KatonahMike 2015-07-27 17:46:46

en effet, vous ne pouvez pas vérifier la version TLS. J'ai dû charger un script à partir d'un site qui ne supporte que TLS 1.2 (par opposition à ma page). Utiliser la balise HTML script simple ne vous donnerait pas la moindre idée que le script n'a pas été chargé. En conséquence j'ai utilisé le script suivant pour charger le JS à partir d'un domaine différent:  

$.ajaxSetup({'cache':true});
$.getScript('{scriptUrl}').done(function(){
   alert("done");
}).fail(function( jqxhr, settings, exception ) {
    alert(jqxhr.status);
    alert(jqxhr.responseText);
    alert(exception);
});

en cas de problèmes TLS le jqxhr.statut 404 de sorte que vous pouvez afficher un message à l'utilisateur.

1
répondu alon 2018-03-20 15:41:09

petite note; code mis à part je pense que les gens devraient être au courant si vous présentez votre utilisateur final avec un message d'erreur à ce sujet, vous devriez comprendre que les versions TLS sur non seulement une restriction de navigateur, mais essentiellement au niveau OS. Vous devez l'avoir activé sur votre machine et votre navigateur doit le supporter. Vous pouvez être sur le dernier chrome, mais si dans les paramètres Internet (sur Windows) il a été désactivé, vous aurez toujours un problème de négociation TLS.

1
répondu GoldPaintedLemons 2018-05-24 14:56:09

Ici est une façon Créer une image avec jQuery, et Ajouter un attribut src, j'utilise un bouton de PayPal, maintenant toute la demande à PayPal doit via TSL1.(2) Espérons que cela peut fonctionner

jQuery('<img />').on({
    load: function() {
      console.log("support TSL1.2");
    },
    error: function() {
      console.log('no support TSL1.2');
    }
}).attr('src','https://www.paypal.com/en_US/i/btn/btn_xpressCheckout.gif');
1
répondu Ady 2018-07-17 06:52:07