有很多人还在用win7
用户“爸爸”来信了
最近迁移机房,在切我们截图翻译功能域名到新接入后有部分用户反馈这个功能不能使用了,具体就是下面这种异常,反馈的用户系统大部分是Windows 7 Service Pack 1,错误码是12175(错误消息 (Winhttp.h)),这个是无法响应执行内容编码,也是第一次见这个。


赶紧排查
接入的改动也生效了广东区域,在广东办公区找测试同学使用相同win7 100%复现这个问题,赶紧查看接入域名的改动,发现对比少了ssl_protocols TLSv1 TLSv1.1,添加上这个配置后测试同学的win7 系统使用截图翻译功能恢复正常,用户“爸爸”这边也恢复正常了。
聊聊TLS
TLS(Transport Layer Security)传输层安全是一种加密协议,它的前身是SSL协议(Secure Sockets Layer)1994年由Netscape(网景)公司发布,从SSL1.0–>SSL2.0–>SSL3.0,后来Netscape倒在互联网爆发黎明前。1999年互联网标准化组织接替网景公司,将 SSL 改名为 TLS。TLS第一个版本是TLS 1.0,该版本生命周期很长,到现在很多政府类网站还是只支持TLS1.0;后续发布的TLS 1.1有漏洞,直接到TLS 1.2(目前最主流),2018年发布了TLS 1.3,首次连接仅需一轮(1-RTT)。TLS具体的连接原理就不在这里表述了。
Supported versions of TLS in Windows
Many operating systems have outdated TLS version defaults or support ceilings that need to be accounted for.
Figure 1: Security Protocol Support by OS Version
Windows OS | SSLv2 | SSLv3 | TLS 1.0 | TLS 1.1 | TLS 1.2 | TLS 1.3 |
---|---|---|---|---|---|---|
Windows Vista | Enabled | Enabled | Enabled | Not Supported | Not Supported | Not Supported |
Windows Server 2008 | Enabled | Enabled | Enabled | Disabled* | Disabled* | Not Supported |
Windows 7 (WS2008 R2) | Enabled | Enabled | Enabled | Disabled* | Disabled* | Not Supported |
Windows 8 (WS2012) | Disabled | Enabled | Enabled | Enabled | Enabled | Not Supported |
Windows 8.1 (WS2012 R2) | Disabled | Enabled | Enabled | Enabled | Enabled | Not Supported |
Windows 10 | Disabled | Enabled | Enabled | Enabled | Enabled | Not Supported |
Windows 11 | Disabled | Enabled | Enabled | Enabled | Enabled | Enabled |
Windows Server 2016 | Not Supported | Disabled | Enabled | Enabled | Enabled | Not Supported |
Windows Server 2016 | Not Supported | Disabled | Enabled | Enabled | Enabled | Not Supported |
Windows Server 2019 | Not Supported | Disabled | Enabled | Enabled | Enabled | Not Supported |
Windows Server 2019 GS edition | Not Supported | Disabled | Disabled | Disabled | Enabled | Not Supported |
Windows Server 2022 | Not Supported | Disabled | Disabled | Disabled | Enabled | Enabled |
win7 TLS
大部分人包括我们测试同学都是下面已经打了SP1补丁的这个版本,如下图

看注册表下面都没有开启的TLS1.2配置
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Internet Settings\WinHttp
HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Internet Settings\WinHttp


查看Win支持的TLS版本,Windows PowerShell中输入下面代码,找了两位朋友A和B,他们的运行结果如下所示:
Add-Type -AssemblyName System.ServiceModel
[System.Enum]::GetNames([System.Net.SecurityProtocolType])


win7这个运行结果是ssl3(SSLv3)Tls(即TLSv1),在我自己的win11和mac上查看,win10支持的TLS协议比较多。


写在最后
我的博客默认的WordPress Nginx中ssl_protocols TLSv1 TLSv1.1 TLSv1.2 TLSv1.3 ,阿里云还是很了解用户的。在机房迁移过程中暴露出来流程不完善、沟通不及时等问题反映了目前我们的不专业,更多专注于Excel汇报,写上去就代表完成了,很多事情都变成了“房间里的大象”,需要警惕和反思。