我们正在停止对 TLS 1.0 和 1.1 的支持,因为它们不再被认为是安全的。
我们如何才能看到受此变化影响的访客百分比?(即那些不支持 TLS 1.2 的访客。)
我们使用带有 IIS8 的 Windows Server 2012 R2。
答案1
设置第二台服务器(例如虚拟机或同一主机上的第二个守护进程)。使用重写规则反向代理请求第二台服务器的可选内容,例如隐藏在页面上的不可见图像。将第二台服务器配置为仅允许 TLS 1.2;不要热链接到另一个主机名...确保使用代理,否则不安全,因此浏览器可能会收到警告,或者可能永远不会加载图像。
然后跟踪图像的请求。不支持的客户端应该有 SSL/TLS 错误。支持客户端会生成一些“200 OK”日志。如果日志没有显示任何有用信息,请尝试代理到某些 javascript,它可以在成功时发出 AJAX 请求来记录流量(但脚本阻止程序可能会阻止此操作)。
在依赖日志进行测试之前,请使用 nmap 等可以列出大量详细信息的良好测试来测试第二台服务器的 ssl/tls 支持。
nmap --script ssl-enum-ciphers example.com
答案2
我不知道有任何方法可以检查服务器日志来查看 Windows 服务器连接使用了什么 SSL/TLS 协议(使用 Nginx 和 Apache 很容易)。
所以我认为最好的方法是使用任何可以跟踪操作系统和浏览器版本的分析软件(例如 Google Analytics)。但这并非 100% 准确(有些人会关闭浏览器中的 JavaScript 和/或跟踪)。
注意使用 Google Analytics 或类似工具很多比试图弄清楚神秘的 USER_AGENT 字段要好,尽管理论上这是另一种方法,而且可能会记录在您的服务器日志中。如果您愿意,请参阅此处了解如何以这种方式执行操作的更多详细信息:https://stackoverflow.com/questions/17798944/get-browser-name-and-version-from-iis-log-file-in-log-parser。
一旦您了解了访问者的浏览器和操作系统版本,您就可以查看此表格,看看他们是否支持 TLS 1.2: https://en.m.wikipedia.org/wiki/Transport_Layer_Security#Web_browsers,这样你就能计算出一个粗略的百分比。
您还可以使用 ssllabs 扫描工具(https://www.ssllabs.com/ssltest/) 将扫描您的网站以测试您的 SSL/TLS 设置 - 包括告诉您参考浏览器将使用哪个版本的 TLS 和哪个密码列表。强烈建议无论如何都进行此扫描以查看 SSL/TLS 配置的状态。
您最关心的将是旧版本的 IE 和旧版本的 android。
您还可以在网站上进行一些浏览器检测,在关闭 TLS 1.0 和 1.1 之前向这些用户添加一个月左右的警告。使用“[if lt IE 11]”语句包含 CSS 样式表非常容易,该样式表会显示针对旧版 IE 的警告,但是 IE10 在标准模式下不再支持此语法,因此它是一种受影响的浏览器。对于较旧的 Android 浏览器执行此操作也并不容易。
答案3
一种可能性是使用可以记录 SSL/TLS 握手版本的反向代理(Squid、Apache 等)。或者,如果您的 Web 服务主机数量非常有限(个位数),您可以直接在服务器上使用 Wireshark 来分析握手。