GlobalProtect 应用程序在 Android 6.0 + 无法建立 VPN 连接使用 IP 地址
40561
Created On 09/26/18 13:47 PM - Last Modified 06/07/23 19:40 PM
Symptom
症状
在 Android 6.0 或更高版本上运行的 GlobalProtect 应用程序在以下情况下无法建立 VPN 连接:
- GlobalProtect 门户/网关的根 CA 证书位于Android 设备上的受信任凭据中.
- GlobalProtect 门户/网关证书公用名 (CN) 是IP 地址.
在这种情况下, 将显示以下错误消息: 无法连接到 GlobalProtect 门户

来自 GlobalProtect 应用程序的 Gp.log 显示以下错误:
(6227) 01/05 17:55:33:120201-javax.net.ssl.SSLPeerUnverifiedException: 主机名192.168.206.1 未验证:
证书: sha1/5BHzss0x9EpOd9YtEPZcwtCNaOQ=
DN: CN = 192.168.206.1, ST = 东京, C = JP
subjectAltNames: [192.168.206.1]
(6227) 01/05 17:55:33:120352-异常 GetHttpResponse, 响应代码为 0
(6227) 01/05 17:55:33:120521-来自服务器的响应为:
null, 异常消息: 主机名192.168.206.1 未验证:
证书: sha1/5BHzss0x9EpOd9YtEPZcwtCNaOQ =
DN: CN = 192.168.206.1, ST = 东京, C = JP
subjectAltNames: [192.168.206.1]
eType:javax.net.ssl.SSLPeerUnverifiedException: 主机名192.168.206.1 未验证:
证书: sha1/5BHzss0x9EpOd9YtEPZcwtCNaOQ =
DN: CN = 192.168.206.1, ST = 东京, C = JP
subjectAltNames: [192.168.206.1]
(6227) 01/05 17:55:33:120557-(l5) JNI, 6243508, 未处理, ret = 错误, javax.net.ssl.SSLPeerUnverifiedException: 主机名192.168.206.1 未验证:
证书: sha1/5BHzss0x9EpOd9YtEPZcwtCNaOQ=
DN: CN = 192.168.206.1, ST = 东京, C = JP
subjectAltNames: [192.168.206.1], 现在返回 NULL
诊断
这是由于 Android 6.0 + 的新行为。
从 Android 6.0 开始, 如果 CN 是证书中的 ip 地址, 则 ip 地址也应作为 ip 地址 "subAltName 的主题替代名称 (SAN)。如果 ip 地址 "subAltName 中缺少 IP 地址, 证书验证将失败。
对于老式的 Android 版本, 只要 CN 匹配, 认证验证就会通过。
Resolution
为具有 ip 地址 "subAltName 字段的 GlobalProtect 门户/网关生成证书, 并替换现有证书。
下面的屏幕截图演示如何在帕洛阿尔托 Netrwork 下一代防火墙上设置 ip 地址 "主题替代名称。
在生成证书时, 添加 "ip" 类型并将 ip 地址作为 "证书属性" 字段中的值输入:
生成的证书显示 "主题替代名称" 字段 中的 IP 地址值:

为GlobalProtect 门户/网关证书设置此证书。 之后, 可以建立 VPN 连接。
请参阅以下用于部署 GlobalProtect 服务器证书的指南:
将服务器证书部署到 GlobalProtect 组件
另一种可用的解决方法是从 Android 手机中删除 CA 证书 (通常来自"设置 > 安全可靠的凭据").
在这种情况下, GlobalProtect 应用程序显示 "Untrsuted 证书" 警告消息一次 (如下所示), 然后将建立连接。

通常不建议这样做, 因为用户应该手动检查目标门户/网关的有效性。