先给结论
从 27.0 开始,苹果系统对服务端的安全配置抬了门槛------传输协议版本、加密套件、证书有效性这三项不满足的,系统可能直接拒绝连接,而且失败的表现跟断网几乎一样,不看日志很难区分。
受影响的不是一条通道,而是设备管理、自动注册、软件更新这一整组。
问题现象
上个月有同行找我排查一批「纳管不上」的机器。现象是仓库里同一批货,有一部分能进来、有一部分不行,而且不行的那些重试很多次也那样。
第一反应是网络,查了半天没查出问题。最后是在服务端那侧找到的原因------这套服务端的加密配置是几年前搭的时候定下的,一直没动过。
受影响范围
被拒的到底是哪几项,按苹果给企业用户的说明(KB 126655),从 27.0 这套要求才会被强制执行。
受影响的范围比多数人想的宽,一共五类连接:
- 设备管理与声明式管理
- 自动设备注册
- 描述文件安装
- 应用安装
- 软件更新
也就是说从机器入网那一刻到后续的日常管控,整条链路都在这个约束下面。
三条门槛
具体的门槛有三条:
- 传输层版本要不低于 1.2
- 加密套件要符合要求,全新的安全传输策略
- 证书必须在有效期内且链完整
三条里最容易出问题的是第三条------证书这件事有明确的一年周期,而一年是很长的时间,长到足够让人忘掉。
为什么这么难查
这类故障难查的原因在于它的失败方式是「拒绝连接」而不是「返回错误」。
站在设备视角,它尝试建立连接,握手阶段谈不拢,连接就断了;设备不会告诉使用者是协议不匹配,也不会弹任何提示。
之所以这样设计,是因为降级攻击的手法就是诱导双方用老旧的协议通信,如果失败信息里说清楚「你的服务端支持哪些版本」,反而给了攻击者一份清单。
表现上它就跟网络不通高度相似,所以排查时很容易在最底层绕圈子。
我们的排查方法
我们现在的做法是把它列成固定检查项:只要出现「一部分设备连得上、一部分连不上」这种差异化现象,第一步就去验服务端证书和协议配置,而不是去查路由。
判断的依据也很直接------连得上的那批和连不上的那批如果分布在同一个网段,问题基本不在网络上。
自查要做的三件事
第一件:跑外部检测
把服务端的协议版本和加密套件跑一次外部检测。市面上这类检测工具不少,重点不是「有没有启用新版本」,而是「有没有禁用老版本」------很多环境是新老并存,协商的时候被拉到老那一档去了。
第二件:盘证书
把服务端上在用的所有证书列出来,写清楚各自的用途、签发日期、有效期天数。
重点不是今天有没有过期,而是未来 60 天内有没有要到期的。为什么要看 60 天而不是 30 天,是因为换证书这件事在多数团队里需要协调,30 天通常不够走完流程。
第三件:加监控
过期这件事是可以提前发现的,前提是有人在盯。最小可行的方案是设两次提醒------到期前 30 天发一次给执行的人,到期前 7 天再发一次并抄送给负责人。
两次之间留出处理窗口,任何一次被忽略都还有第二次兜底。
三个容易误判的地方
误判一:以为是服务端被限流或者网络抖动。
不等于。如果是路由端口层面的问题,重试会有部分成功率;证书或协议不匹配是恒定失败,重试一百次也一样。
误判二:以为老版本还能协商将就。
不适用。这一批要求是从 27.0 起正式强制的,不是建议。
误判三:以为只影响设备管理这一条通道。
不适用。自动注册和应用安装同样在范围内,新设备第一次纳管的时候卡住就是在这里。
这套判断不成立的时候
需要提前说明:
- 如果你的服务端是托管在第三方云上、由对方负责证书轮换的,这三项检查的优先级可以降低,但依然要确认对方有没有做兼容性验证------托管不等于合规。
- 另外如果设备全部停留在较老的系统版本上,短期内看不到影响,但升级一旦发生就会集中爆发,建议在系统版本升级计划里预留这一段。
- 还有一种情况:自建服务端且长期无人维护的,换传输层证书往往牵扯到中间件版本升级,这时候要按项目来做,不是改一行配置的事。
落到台账上是怎么记的
MDM.Plus 的指令记录把发出时间、回执时间、失败原因码分三列存,同一台设备的连续失败会各自留一条。
给同行的一个自验判据
最省事的动作是今天就把服务端证书的有效期打印出来贴到日历上,然后跑一次外部协议检测。
MDM.Plus 的指令记录里这三列能直接导出做失败归因,至于什么时候安排轮换窗口,还是使用的人按自己的业务节奏说了算。
四条判据速记
- 判据一:出现「同网段一部分通、一部分不通」时先查服务端安全配置,不查路由
- 判据二:检查的重点是「有没有禁用老版本」,不是「有没有启用新版本」
- 判据三:证书盘点的窗口看 60 天,不是 30 天
- 判据四:提醒设两次,到期前 30 天一次、到期前 7 天一次并抄送负责人