【问题标题】:Flutter HTTPS Handshake error in client (OS Error: CERTIFICATE_VERIFY_FAILED: ok(handshake.cc:363))客户端中的 Flutter HTTPS 握手错误(操作系统错误:CERTIFICATE_VERIFY_FAILED:ok(handshake.cc:363))
【发布时间】:2019-07-22 12:13:36
【问题描述】:

一位同事给了我一个 Flutter 项目,尝试在 iOS 中构建应用程序(我使用 Mac,我们都使用 Android Studio)。一切正常,除了这个错误:

Handshake error in client (OS Error: CERTIFICATE_VERIFY_FAILED: ok(handshake.cc:363))

如果我使用 HTTP 而不是 HTTPS,它显然可以工作。我的同事说他通过添加这行代码解决了:

client.badCertificateCallback = (X509Certificate cert, String host, int port) => true;

这行代码也在我的项目中,因为来源是一样的。那么为什么它可以在 Android 上运行,而不能在 iOS 上运行呢?

【问题讨论】:

    标签: ios android-studio ssl flutter https


    【解决方案1】:

    检查您正在使用的 https 证书,我认为 iOS 在 https 连接方面比 android 有更严格的措施。为了安全起见,请尝试更新您的服务器证书。

    【讨论】:

      【解决方案2】:

      如果你添加了这一行,这应该可以在 ios 上运行

      client.badCertificateCallback = (X509Certificate cert, String host, int port) 
      => true;
      

      所以请仔细检查您是否使用相同的客户端实例来处理您的请求,以及您是否在设置 badCertificateCallback 参数后发出请求

      【讨论】:

        【解决方案3】:

        所有 http 上 ssl 认证问题的最佳方法 请求

        它适用于两个平台(android 和 ios)

        class MyHttpOverrides extends HttpOverrides{
          @override
          HttpClient createHttpClient(SecurityContext context){
            return super.createHttpClient(context)
              ..badCertificateCallback = (X509Certificate cert, String host, int port)=> true;
          }
        }
        
        void main(){
            HttpOverrides.global = new MyHttpOverrides();
            runApp(new MyApp());
        }
        

        【讨论】:

        • 不是安全故障吗?
        【解决方案4】:

        老问题,但我的解决方案是确保在客户端正确设置时间/日期

        【讨论】:

          猜你喜欢
          • 2022-06-16
          • 2021-07-13
          • 2022-07-20
          • 1970-01-01
          • 2013-08-02
          • 2017-05-06
          • 2022-11-09
          • 2016-05-04
          • 1970-01-01
          相关资源
          最近更新 更多