본문 바로가기

개발이야기

플러터앱 인증서 오류 (CERTIFICATE_VERIFY_FAILED)

플러터로 만든 앱에서 안드로이드 환경에서만 웹페이지를 읽어오는 부분에서 오류가 발생함. 

서버쪽 인증서 오류 인듯함. 

에러 메시지... 
I/flutter ( 5949): Error fetching schedule for ID 1890: HandshakeException: Handshake error in client (OS Error:|

I/flutter ( 5949): CERTIFICATE_VERIFY_FAILED: unable to get local issuer certificate(handshake.cc:295))

이것 저것 다 해보다가.. 특정 도메인만 인증서 체크를 우회 하도록 수정했다. 

 

import 'dart:io';

class MyHttpOverrides extends HttpOverrides {
  final List<String> allowedHosts;

  MyHttpOverrides(this.allowedHosts);

  @override
  HttpClient createHttpClient(SecurityContext? context) {
    return super.createHttpClient(context)
      ..badCertificateCallback = (X509Certificate cert, String host, int port) {
        // allowedHosts 리스트에 있는 도메인만 예외 허용
        if (allowedHosts.contains(host)) {
          print("SSL 인증서 예외 허용: $host");
          return true;
        }
        return false;
      };
  }
}

 

-- Main.dart 에서 

  HttpOverrides.global = MyHttpOverrides(["도메인 정보 입력"]);
  runApp()