web-dev-qa-db-ja.com

ブラウザのTLS互換性を検出する

ホストが最近TLS 1.0などの古いSSLプロトコルを無効にしているSSL Webサイトがあります。ブラウザによっては、使用しているブラウザが少なくともTLS 1.1をサポートしていない場合、サイト訪問者がサイトにアクセスすると空白ページまたは不可解なエラーメッセージが表示されます。

SSLポート上にないランディングページを作成したいと考えていました。TLS1.1以降をサポートしている場合、ブラウザの機能を検出できます。そうでない場合は、ブラウザをアップグレードするか、別のブラウザを使用するためのわかりやすいメッセージを表示したいと思います。

これは、クライアント側のJavaScriptライブラリを使用して達成できるものですか?もしそうなら、私は何を使用する必要があります。

ありがとう。

24
Aamir

API で提供されている SSLはどうですか? を使用できます。

次の例では、tls_versiongiven_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>
32
Oriol

SSL Labs( https://www.ssllabs.com/ssltest/viewMyClient.html )およびHowsMySSL( https://www.howsmyssl.com/ )。 HowsMySSLには、JavaScriptから簡単にチェックできるNice APIもあります。

4
KatonahMike

小さなメモ;コードについては、これに関するエラーメッセージをエンドユーザーに提示する場合、人々は知っているべきだと思います。マシン上で有効にする必要がありますandブラウザがサポートしている必要があります。最新のクロムを使用できますが、インターネット設定(Windows)で無効になっている場合、TLSネゴシエーションの問題が引き続き発生します。

2

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');
2
Ady

実際、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になるため、ユーザーにメッセージを表示できます。

2
alon