You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Flutter报javax.net.ssl.SSLException连接关闭Tag mismatch错误如何解决

报错原因说明

该报错是JVM层SSL握手阶段报文校验失败导致的,Tag mismatch说明收到的SSL报文校验和和预期值不匹配,通常由网络代理拦截、证书篡改、JDK版本bug三类原因导致,按触发场景对应排查解决方法如下:

排查步骤
  • 先确认报错触发时机:是执行flutter pub get/flutter run拉取依赖时触发,还是调用业务服务端接口时触发,两类场景的解决方案完全不同
  • 执行java -version查看本地JDK版本,JDK 8 201及之前的小版本普遍存在SSL校验的已知bug
  • 检查本地是否开启了代理、VPN、公司内网管控,这类网络设施大概率会篡改SSL证书导致校验失败
  • 若为业务接口报错,直接用浏览器访问对应接口地址,确认证书是否有效、是否被篡改
解决方案

场景1:拉取Flutter依赖时报错

  • 优先切换国内Pub镜像源,在终端执行对应命令前先设置环境变量:
    macOS/Linux 终端执行:
    export PUB_HOSTED_URL=https://pub.flutter-io.cn
    export FLUTTER_STORAGE_BASE_URL=https://storage.flutter-io.cn
    flutter pub get
    
    Windows CMD执行:
    set PUB_HOSTED_URL=https://pub.flutter-io.cn
    set FLUTTER_STORAGE_BASE_URL=https://storage.flutter-io.cn
    flutter pub get
    
  • 升级本地JDK到8u301以上的稳定版本,或直接配置项目使用Android Studio内置的JRE,规避版本bug
  • 关闭本地所有代理、VPN工具后重试,排除网络层篡改SSL报文的问题

场景2:调用业务接口时报错

  • 先确认服务端SSL证书在有效期内、证书链完整,没有被运营商或内网设备篡改
  • 若使用自签名证书,需要在Flutter的HTTP请求配置中主动信任对应证书,以Dio为例:
    import 'package:dio/dio.dart';
    import 'package:dio/adapter.dart';
    import 'dart:io';
    
    void configDio(Dio dio) {
      (dio.httpClientAdapter as DefaultHttpClientAdapter).onHttpClientCreate = (client) {
        client.badCertificateCallback = (X509Certificate cert, String host, int port) {
          // 匹配自签名证书的pem内容后信任,不要直接返回true
          return cert.pem == "你的自签名证书PEM格式内容";
        };
        return client;
      };
    }
    
  • 测试阶段可临时关闭SSL校验快速验证问题,该配置禁止在生产环境使用

内容的提问来源于stack exchange,提问作者s.j

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 07:21:01