如何检查 iPhone 上安装的 VPN 证书
在启用根证书或删除配置以修复一次失败的连接之前,先查看描述文件、证书角色和信任范围。
iPhone 上的 VPN 连接停止工作,第一反应往往是找一张证书来修。在启用根证书或删除描述文件之前,先弄清实际安装了什么、它扮演什么角色。证书可以标识客户端、标识服务器,或者提供设备应当信任的签发者,这三种任务的适用范围和修复路径各不相同。下面的顺序从描述文件开始,然后收窄到角色和信任决定。每一步都留下一条笔记,方便你之后对照。
从 VPN 与设备管理开始
打开设置,再打开通用,然后打开 VPN 与设备管理。这个界面会列出配置描述文件以及设备的管理状态。一个描述文件可能包含多个载荷,所以要打开相关的那一个,读取它的来源和证书载荷,而不是只看描述文件名称。
如果设备处于监管之下或已加入设备管理,部分条目归组织所有,无法在本地修改。在计划任何改动之前先记下来源,因为你删除的受管理描述文件通常会自动回来。
确认证书扮演什么角色
客户端身份证书与存放在设备钥匙串中的私钥配对。服务器证书由网关出示,并由客户端验证。根证书或中间证书则是要求设备信任的签发者。前两者由连接使用;第三者会改变所有链到它的对象的验证方式。在改动任何东西之前先写下签发者。如果别处的信任出了问题,你要对照的就是这条笔记。
公开显示证书并不一定会暴露或导出配对的私钥,也不应该这样做。如果 VPN 需要客户端身份,私钥必须存在于钥匙串中并与证书关联,这与看到证书出现在列表里是两种不同的检查。
检查信任,但只针对正确的签发者
Apple 的文档说明,通过描述文件手动安装的根证书不会自动获得 SSL 信任。证书信任设置界面控制这个手动安装的根证书是否被信任,而启用它会影响所有链到该签发者的连接,不只是 VPN。
正因为影响面这么宽,才需要通过可信渠道确认组织预期的配置,再拨动这个开关。VPN 应用的私有 CA 的适用范围可能不同于系统级根证书,为了修一个应用而启用根证书,可能把信任扩展到远超最初问题的地方。
在替换任何东西之前先读错误
主机名不匹配、叶子证书过期、证书链不完整和缺少私钥是四种不同的故障。它们可能产生相似的用户可见提示,所以在替换材料之前,要检查实际的错误文本以及设备的日期和时间。
如果错误指向服务器身份,问题很可能根本不是客户端证书。如果错误指向不受信任的签发者,就去看证书链和信任设置。因为服务器证书过期而替换一个本来可用的客户端身份,只会浪费一天,什么也改变不了。
带着恢复计划删除或重装
删除描述文件可能会移除相关设置和数据,在受管理设备上还可能要走管理员的退场流程。删除之前先问清描述文件还承载了什么,并且 保留一条恢复配置的途径,以防连接之后仍然失败。
Apple 支持文章 介绍了描述文件安装和信任行为。用它确认设备应当信任什么,然后一次只改一处,并从全新连接重新测试 VPN。