检测浏览器是否启用了TLS

3

有没有一种方法可以检查浏览器是否启用了TLS?

我只能使用HTML和Javascript。


2
你是否只需要测试浏览器是否支持SSL或TLS,还是想要专门测试TLS?如果你只是想测试HTTPS支持,我建议发送一个Ajax请求到一个使用HTTPS的页面。 - apsillers
@apsillers +,我们想要验证TLS。如果必要的话,我们会使用类似这样的方法。 - Rubber Duck
我认为任何不到7-8年的浏览器至少都支持TLS 1.0。禁用它没有意义(但确实可能会发生)。 - Bruno
2个回答

2
在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 = 没有启用 IE7 和 HTTPS 上的 MSDN

有没有其他浏览器也能做到这一点的javascript库?我们的ssl网站主机已禁用TLS 1.0及以下版本。我们需要以用户友好的方式通知网站访问者升级他们的浏览器。目前他们得到的要么是空白页面,要么是一些神秘的错误信息。 - Aamir

1
我能找到的唯一解决方案是配置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这样的东西。 - Bruno

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接