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.
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>
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.
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.
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.
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');