android DioError握手异常:客户端中的握手错误(操作系统错误:证书验证失败:证书已过期(handshake.cc:393))

kx1ctssn  于 2022-12-16  发布在  Android
关注(0)|答案(1)|浏览(446)

E/flutter (17310): [ERROR:flutter/runtime/dart_vm_initializer.cc(41)] Unhandled Exception: DioError [DioErrorType.other]: HandshakeException: Handshake error in client (OS Error: E/flutter (17310): CERTIFICATE_VERIFY_FAILED: certificate has expired(handshake.cc:393)) E/flutter (17310): Source stack: E/flutter (17310): #0 DioMixin.fetch (package:dio/src/dio_mixin.dart:488:35) E/flutter (17310): #1 DioMixin.request (package:dio/src/dio_mixin.dart:483:12) E/flutter (17310): #2 DioMixin.get (package:dio/src/dio_mixin.dart:61:12) E/flutter (17310): #3 getState (package:land_resource_inventory/modules/home/view/home_page.dart:355:28) E/flutter (17310): #4 _onTileClicked (package:land_resource_inventory/modules/home/view/home_page.dart:345:7) E/flutter (17310): #5 _MyHomePageState.build.<anonymous closure>.<anonymous closure> (package:land_resource_inventory/modules/home/view/home_page.dart:232:40) E/flutter (17310): #6 _InkResponseState.handleTap (package:flutter/src/material/ink_well.dart:1072:21) E/flutter (17310): #7 GestureRecognizer.invokeCallback (package:flutter/src/gestures/recognizer.dart:253:24) E/flutter (17310): #8 TapGestureRecognizer.handleTapUp (package:flutter/src/gestures/tap.dart:627:11) E/flutter (17310): #9 BaseTapGestureRecognizer._checkUp (package:flutter/src/gestures/tap.dart:306:5) E/flutter (17310): #10 BaseTapGestureRecognizer.acceptGesture (package:flutter/src/gestures/tap.dart:276:7) E/flutter (17310): #11 GestureArenaManager.sweep (package:flutter/src/gestures/arena.dart:163:27) E/flutter (17310): #12 GestureBinding.handleEvent (package:flutter/src/gestures/binding.dart:464:20) E/flutter (17310): #13 GestureBinding.dispatchEvent (package:flutter/src/gestures/binding.dart:440:22) E/flutter (17310): #14 RendererBinding.dispatchEvent (package:flutter/src/rendering/binding.dart:337:11) E/flutter (17310): #15 GestureBinding._handlePointerEventImmediately (package:flutter/src/gestures/binding.dart:395:7) E/flutter (17310): #16 GestureBinding.handlePointerEvent (package:flutter/src/gestures/binding.dart:357:5) E/flutter (17310): #17 GestureBinding._flushPointerEventQueue (package:flutter/src/gestures/binding.dart:314:7) E/flutter (17310): #18 GestureBinding._handlePointerDataPacket (package:flutter/src/gestures/binding.dart:295:7) E/flutter (17310): #19 _invoke1 (dart:ui/hooks.dart:167:13) E/flutter (17310): #20 PlatformDispatcher._dispatchPointerDataPacket (dart:ui/platform_dispatcher.dart:341:7) E/flutter (17310): #21 _dispatchPointerDataPacket (dart:ui/hooks.dart:94:31) E/flutter (17310): E/flutter (17310): #0 DioMixin.fetch.<anonymous closure> (package:dio/src/dio_mixin.dart:643:7) E/flutter (17310): #1 _RootZone.runBinary (dart:async/zone.dart:1658:54) E/flutter (17310): #2 _FutureListener.handleError (dart:async/future_impl.dart:162:22) E/flutter (17310): #3 Future._propagateToListeners.handleError (dart:async/future_impl.dart:778:47) E/flutter (17310): #4 Future._propagateToListeners (dart:async/future_impl.dart:799:13) E/flutter (17310): #5 Future._completeError (dart:async/future_impl.dart:574:5) E/flutter (17310): #6 _SyncCompleter._completeError (dart:async/future_impl.dart:51:12) E/flutter (17310): #7 _Completer.completeError (dart:async/future_impl.dart:23:5) E/flutter (17310): #8 Future.any.onError (dart:async/future.dart:617:45) E/flutter (17310): #9 _RootZone.runBinary (dart:async/zone.dart:1658:54) E/flutter (17310): #10 _FutureListener.handleError (dart:async/future_impl.dart:162:22) E/flutter (17310): #11 Future._propagateToListeners.handleError (dart:async/future_impl.dart:778:47) E/flutter (17310): #12 Future._propagateToListeners (dart:async/future_impl.dart:799:13) E/flutter (17310): #13 Future._completeError (dart:async/future_impl.dart:574:5) E/flutter (17310): #14 Future._asyncCompleteError.<anonymous closure> (dart:async/future_impl.dart:665:7) E/flutter (17310): #15 _microtaskLoop (dart:async/schedule_microtask.dart:40:21) E/flutter (17310): #16 _startMicrotaskLoop (dart:async/schedule_microtask.dart:49:5)
我已经试过了:https://stackoverflow.com/a/61312927/1776243

ruarlubt

ruarlubt1#

尽管在生产场景中不建议这样做,但您可以通过提供onHttpClientCreate来覆盖dio使用的HttpClient,从而接受任何证书,如下所示:

(dio.httpClientAdapter as DefaultHttpClientAdapter).onHttpClientCreate  = (client) {
  client.badCertificateCallback=(X509Certificate cert, String host, int port){
      return true;
  };
};

同样,只能将其用于调试和开发目的。在生产中,您应该使用有效的SSL证书。
onHttpClientCreate的文档

相关问题