这条挂在 PICS 上,所以先把它什么时候成立讲清楚。
标准设定的场景是:初始握手时对端提出用 TLS 1.1,而且设备在自己的 PICS 里声明了支持 TLS 1.1。这种情况下设备不该一棒子打死,而是要报一条Warning: Insecure TLS version,然后继续把握手做完,连接留着。
第一眼会觉得别扭。TLS 1.1 是弱版本,为什么还放行?因为标准在这里分了两件事:设备是"没实现"还是"实现了但不推荐"。没实现的话,对方提出来就是谈不拢,那属于 6.3.3,要报警断链。但如果 PICS 里勾了支持,那放行就是设备自己给出的承诺,标准要它做的只是打个安全标记,提醒运维这条连接不够安全。
我们这台 DUT 是 TLS 1.2 only,PICS 里没勾 1.1,所以这条对我们是 NA,不用测。下面写的是它适用时该怎么做,给需要的人参考。
先确认前提
翻 DUT 的 PICS,看 5.2.3 那一栏 TLS Versions 里有没有 TLS 1.1。没有就跳过,这条不适用。有的话,还得确认设备确实允许 1.1 接入,别出现"声明支持但配置里关掉了"这种自相矛盾的情况。
怎么造出这个场景
条件其实很简单,客户端强制用 1.1 连过去就行:
openssl s_client-connect127.0.0.1:19998\-tls1_1\-certclient.crt-keyclient.key\-CAfileca.crt注意这是老版本 openssl 的写法。新版本(3.x)默认把 1.1 关在安全级别里了,直接跑会报no protocols available,得把安全级别降下来:
openssl s_client-connect127.0.0.1:19998\-tls1_1-cipher"DEFAULT:@SECLEVEL=0"\-certclient.crt-keyclient.key\-CAfileca.crt怎么判定通过
和 6.3.3 那种"报警断链"不一样,这条的关键是连接不能断。
| 检查项 | 通过标准 |
|---|---|
| 握手结果 | 成功,协商出版本 TLS 1.1 |
| 安全事件 | Warning: Insecure TLS version |
| 连接 | 保持,能继续做应用数据交换 |
服务器日志里那条 Warning 是判定核心。如果设备直接拒了,那要么是它其实并不支持 1.1(PICS 声明有误),要么是它把"弱版本"和"不支持版本"处理混了,这属于实现缺陷。