Ошибка рукопожатия при вызове серверного API с действующим сертификатом - PullRequest
0 голосов
/ 24 мая 2019

Один из моих клиентов получает ошибку CERTIFICATE_VERIFY_FAILER, когда приложение пытается отправить сообщение https в наш сервис API-интерфейса. Сервис подписан с действующим CA. Пока об этом сообщил только один человек.

Ошибка из исключения: HandshakeException: ошибка рукопожатия в клиенте (ошибка OE: CERTIFICATE_VERIFY_FAILER: самозаверяющий сертификат в цепочке сертификатов (handshake.cc:352))

Клиент сделал сброс к заводским настройкам, но это не помогло. Они используют приложение на Samsung S6. У них есть два других телефона на том же Wi-Fi, который работает нормально. Эта проблема возникает как на Wi-Fi и сотовых данных. Я попытался обновить до последней версии флаттера (v1.6.3-pre.15). Они все еще сообщают о проблеме. Я не смог воспроизвести это на эмуляторе. Также приложение работает на других устройствах Samsung S6.

Я также подтвердил сертификат SSL с помощью https://www.sslshopper.com/ssl-checker.html#hostname=prod.mapdot.net

Вот код, который выдает исключение:

  static Future<String> mapDotSignIn(String usr, String pass) async {
    final url = ApiHelper.RootUrl + "Login/Login";
    try {
      Map<String, dynamic> json = new Map<String, dynamic>();
      json['user'] = usr;
      json['pass'] = pass;

      var jsonStr =jsonEncode(json);

      var resp = await http.post(url,
          headers: {"Content-Type": "application/json"}, body: jsonStr);

      Map<String, dynamic> respMap = jsonDecode(resp.body);
      return respMap['token'];
    } catch (e) {
      return 'Error: ' + e.toString();
    }
  }

Я думал о добавлении ..badCertificateCallback к вызову, но я бы предпочел этого избежать, если нет другого пути. Есть идеи, что может вызвать это?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...