Один из моих клиентов получает ошибку 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 к вызову, но я бы предпочел этого избежать, если нет другого пути. Есть идеи, что может вызвать это?