Nous avons un site Web SSL où l'hôte a récemment désactivé les anciens protocoles SSL comme TLS 1.0 et inférieurs. Selon le navigateur, le visiteur du site reçoit une page vierge ou un message d'erreur cryptique lorsqu'il visite le site si le navigateur qu'il utilise ne prend pas en charge au moins TLS 1.1.
J'espérais créer une page de destination qui ne se trouve pas sur le port SSL et où je peux détecter la capacité du navigateur s'il prend en charge TLS 1.1 et supérieur. Si ce n'est pas le cas, je veux leur montrer un message amical 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.
Vous pouvez utiliser l'API fourni par Comment va mon SSL? .
Dans l'exemple suivant, je vérifie le tls_version
. Vérification given_cipher_suites
peut également ê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 existe 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 possède également une belle API qui peut être facilement vérifiée à partir de JavaScript.
Petite note; À part le code, je pense que les gens devraient être conscients si vous présentez à votre utilisateur final un message d'erreur à ce sujet, vous devez comprendre que les versions de TLS ne sont pas seulement une restriction de navigateur, mais essentiellement au niveau du système d'exploitation. Vous devez l'activer sur votre machine et votre navigateur doit le prendre en charge. Vous pouvez être sur le dernier chrome, mais si dans les paramètres Internet (sous Windows) il a été désactivé, vous aurez toujours un problème de négociation TLS.
Voici un moyen de créer une image avec jQuery, et d'ajouter un attribut src, j'utilise un bouton de Paypal, maintenant toute la demande à Paypal doit via TSL1.2 J'espère 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');
En effet, vous ne pouvez pas vérifier la version TLS. J'ai dû charger un script à partir d'un site qui ne prend en charge que TLS 1.2 (par opposition à ma page). L'utilisation de la simple balise de script HTML ne vous donnerait aucun indice que le script n'a pas été chargé. En conséquence, j'ai fini par utiliser le script suivant pour charger JS à partir d'un autre domaine:
$.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.status sera 404 afin que vous puissiez afficher un message à l'utilisateur.