ホストが最近TLS 1.0などの古いSSLプロトコルを無効にしているSSL Webサイトがあります。ブラウザによっては、使用しているブラウザが少なくともTLS 1.1をサポートしていない場合、サイト訪問者がサイトにアクセスすると空白ページまたは不可解なエラーメッセージが表示されます。
SSLポート上にないランディングページを作成したいと考えていました。TLS1.1以降をサポートしている場合、ブラウザの機能を検出できます。そうでない場合は、ブラウザをアップグレードするか、別のブラウザを使用するためのわかりやすいメッセージを表示したいと思います。
これは、クライアント側のJavaScriptライブラリを使用して達成できるものですか?もしそうなら、私は何を使用する必要があります。
ありがとう。
API で提供されている SSLはどうですか? を使用できます。
次の例では、tls_version
。 given_cipher_suites
も良いアイデアかもしれません。
<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>
SSL Labs( https://www.ssllabs.com/ssltest/viewMyClient.html )およびHowsMySSL( https://www.howsmyssl.com/ )。 HowsMySSLには、JavaScriptから簡単にチェックできるNice APIもあります。
小さなメモ;コードについては、これに関するエラーメッセージをエンドユーザーに提示する場合、人々は知っているべきだと思います。マシン上で有効にする必要がありますandブラウザがサポートしている必要があります。最新のクロムを使用できますが、インターネット設定(Windows)で無効になっている場合、TLSネゴシエーションの問題が引き続き発生します。
JQueryで画像を作成し、src属性を追加する方法を次に示します。Paypalのボタンを使用します。PaypalへのすべてのリクエストはTSL1.2を介して行う必要があります。
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');
実際、TLSバージョンを確認することはできません。私のページではなく、TLS 1.2のみをサポートするサイトからスクリプトをロードする必要がありました。単純なHTMLスクリプトタグを使用しても、スクリプトがロードされなかったという手がかりは得られません。その結果、次のスクリプトを使用して、異なるドメインからJSをロードすることになりました。
$.ajaxSetup({'cache':true});
$.getScript('{scriptUrl}').done(function(){
alert("done");
}).fail(function( jqxhr, settings, exception ) {
alert(jqxhr.status);
alert(jqxhr.responseText);
alert(exception);
});
TLSの問題の場合、jqxhr.statusは404になるため、ユーザーにメッセージを表示できます。