当应用程序尝试将https发布到我们的生产API服务时,我的一位客户遇到了CERTIFICATE_VERIFY_FAILER错误。该服务已使用有效的CA签名。到目前为止,只有一个人举报过。
来自异常的错误: HandshakeException:客户端中的握手错误(OE错误:CERTIFICATE_VERIFY_FAILER:证书链中的自签名证书(handshake.cc:352))
客户进行了出厂重置,但没有解决。他们正在三星S6上使用该应用程序。他们在同一wifi上还有另外两部手机,效果很好。该问题同时出现在wifi和手机数据上。我尝试升级到最新版本的Flutter(v1.6.3-pre.15)。他们仍在报告问题。我一直无法在模拟器上重现此内容。该应用程序还可以在其他Samsung S6设备上运行。
我还使用https://www.sslshopper.com/ssl-checker.html#hostname=prod.mapdot.net验证了ssl证书
以下是引发异常的代码:
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添加到调用中,但是除非没有其他方法,否则我宁愿避免这种情况。有什么想法可能导致这种情况吗?