【问题标题】:Detect if browser has TLS enabled检测浏览器是否启用了 TLS
【发布时间】:2012-06-14 16:15:55
【问题描述】:

有没有办法检查浏览器是否启用了 TLS?

我仅限于使用 HTML 和 Javascript。

【问题讨论】:

  • 测试浏览器是否支持 SSL 或 TLS 是否足够,或者您是否要专门测试 TLS?如果你只是想测试 HTTPS 支持,我会通过 HTTPS 发送一个 Ajax 请求页面。
  • @apsillers +,我们要验证 TLS。如有必要,我们将使用类似于此的方法。
  • 我认为至少 7-8 岁以下的任何浏览器都不支持 TLS 1.0。禁用它没有意义(但确实可能发生)。

标签: javascript html ssl


【解决方案1】:

在 Javascript 中,利用 ActiveX,并适用于 IE7,

(function(){
var key = "HKCU\\Software\\Microsoft\\Windows\\CurrentVersion\\Internet Settings\\SecureProtocols";
var t = document.getElementById("detectREG_output");
var Shell = new ActiveXObject("WScript.Shell");
var value = Shell.RegRead(key);
t.innerHTML = value;
})();

这会输出一个位域,小数等于:

168 = 启用 SSL 3.0、SSL 2.0、TLS 1.0

160 = SSL 3.0,启用 TLS 1.0

40 = SSL 3.0,启用 SSL 2.0

8 = 启用 SSL 2.0

0 = 没有启用

MSDN on IE7 and HTTPS

【讨论】:

  • 是否有 javascript 库也可以为其他浏览器执行此操作?我们的 ssl 网站主机已禁用 TLS 1.0 及以下版本。我们需要通知网站访问者以用户友好的方式升级他们的浏览器。目前他们得到的要么是空白页,要么是一些神秘的错误信息。
【解决方案2】:

我能找到的唯一解决方案是配置 apache 以遵守一定的密码顺序:

SSLCipherSuite !aNULL:!eNULL:!EXPORT:!DSS:!DES:!SSLv2:RC4-SHA:RC4-MD5:ALL
SSLHonorCipherOrder on

例如。然后在 PHP 页面(在 https 后面)显示 $_ENV['SSL_PROTOCOL']。最后在 JS 中使用结果。

【讨论】:

  • 这里的密码套件选择可以适用于 SSLv3 和 TLS。你需要像SSLProtocol -SSLv3 -SSLv2 +TLSv1 这样的东西。
猜你喜欢
  • 1970-01-01
  • 2013-07-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-05-11
  • 1970-01-01
  • 2011-05-02
  • 2015-09-08
相关资源
最近更新 更多