EAP-TTLS 证书错误
EAP-TTLS 证书错误
FortiClient 使用 EAP-TTLS 建立 IKEv2 拨号 VPN 时,如果不信任 EAP 服务器证书的签发 CA,或服务端证书已经过期,TLS 握手会失败,IKE SA 无法完成建立。
FortiClient 7.4.3 及之后版本支持 IKEv2 EAP-TTLS。该排查方法假设 IKEv2 拨号隧道基础配置已经完成,并且 FortiGate 一阶段已通过 CLI 启用 eap、配置 eap-identity send-request 并指定认证用户组。
FortiGate 直接认证本地或 LDAP 用户时,EAP-TTLS 终止在 FortiGate,默认使用全局 wifi-certificate。使用外部 RADIUS 服务器时,EAP-TTLS 由外部 RADIUS 服务器终止,应在 RADIUS 服务器上检查 EAP 方法、服务端证书和完整证书链。
相关信息
- FortiClient 端启用 EAP-TTLS 的方法请参考 VPN → IPSec VPN → 通用 IPSec 配置 → 一阶段配置 → EAP → IKEv2 LDAP 认证章节中的“FortiClient 配置选择”。
- EAP 认证路径请参考 VPN → IPSec VPN → 通用 IPSec 配置 → 一阶段配置 → EAP → EAP 认证章节。
问题现象
客户端不信任签发 CA 时,FortiGate 的
eap_proxy调试中会出现fatal:unknown CA、tlsv1 alert unknown ca和EAP-TTLS: PHASE1 -> FAILURE:# diagnose debug application eap_proxy -1 # diagnose debug enable EAP entering state RECEIVED EAP: parseEapResp: rxResp=1 respId=0 respMethod=21 respVendor=0 respVendorMethod=0 EAP: EAP entering state INTEGRITY_CHECK EAP: EAP entering state METHOD_RESPONSE SSL: Received packet(len=13) - Flags 0x00 SSL: Received packet: Flags 0x0 Message Length 0 SSL: (where=0x4004 ret=0x230) SSL: SSL3 alert: read (remote end reported an error):fatal:unknown CA SSL: (where=0x2002 ret=0xffffffff) SSL: SSL_accept:error in error OpenSSL: openssl_handshake - SSL_connect error:0A000418:SSL routines::tlsv1 alert unknown ca SSL: 0 bytes pending from ssl_out SSL: Failed - tls_out available to report error EAP-TTLS: PHASE1 -> FAILURE EAP: EAP entering state SELECT_ACTION EAP: getDecision: method failed -> FAILURE EAP: EAP entering state FAILURE EAP: Building EAP-Failure (id=0)服务端证书过期时,调试中会出现
fatal:certificate expired和ssl/tls alert certificate expired:# diagnose debug application eap_proxy -1 # diagnose debug enable EAP: EAP entering state RECEIVED EAP: parseEapResp: rxResp=1 respId=241 respMethod=21 respVendor=0 respVendorMethod=0 EAP: EAP entering state INTEGRITY_CHECK EAP: EAP entering state METHOD_RESPONSE SSL: Received packet(len=13) - Flags 0x00 SSL: Received packet: Flags 0x0 Message Length 0 SSL: (where=0x4004 ret=0x22d) SSL: SSL3 alert: read (remote end reported an error):fatal:certificate expired SSL: (where=0x2002 ret=0xffffffff) SSL: SSL_accept:error in error OpenSSL: openssl_handshake - SSL_connect error:0A000415:SSL routines::ssl/tls alert certificate expired SSL: 0 bytes pending from ssl_out SSL: Failed - tls_out available to report error EAP-TTLS: PHASE1 -> FAILURE
解决方法
FortiGate 终止 EAP-TTLS 时,查看当前
wifi-certificate(默认会使用此证书):# show full system global | grep wifi-certificate set wifi-certificate "Fortinet_Wifi"确认所选证书未过期,证书名称与实际部署一致,并在 FortiClient 终端的系统证书存储中安装签发 CA 和所需的中间 CA。使用私有 CA 证书时必须预先部署信任链。
提示
- 默认
Fortinet_Wifi证书通常由公共 CA 签发,不需要客户端手动信任,但该证书有可能由于 FortiGate 长时间未向 FortiGuard 更新导致过期,如下所示。 - FortiGate 与 FortiGuard 通信正常,且开启自动更新的情况下,会自动定期更新该证书。

- 默认
需要更换 FortiGate EAP 服务端证书时,在全局配置中指定客户端信任且未过期的证书。
config system global set wifi-certificate <trusted-certificate> end外部 RADIUS 服务器终止 EAP-TTLS 时,在 RADIUS 服务器上更换 EAP 服务端证书,并将对应 CA 证书安装到客户端系统证书存储中,不要修改 FortiGate 的
wifi-certificate作为替代。重新连接,确认调试中不再出现证书错误,TLS 握手完成并继续到 EAP Success。