SSL handshake error on self-signed cert in Flutter

2019-02-25 10:32发布

问题:

I'm trying to connect server with self-signed cert, but I take error:
E/flutter ( 3781): HandshakeException: Handshake error in client (OS Error:
E/flutter ( 3781): CERTIFICATE_VERIFY_FAILED: Hostname mismatch(ssl_cert.c:345))
Code, where I set cert:

String path = '/storage/sdcard0/server.crt';
SecurityContext context = new SecurityContext();
context.setTrustedCertificates(path, password: 'hello');
_client = new HttpClient(context: context);

What I'm doing wrong?

If I don't set SecurityContext, I get SSL handshake error.

回答1:

I used HttpClient.badCertificateCallback
Here is a code to accept any cert:

_client = new HttpClient();
_client.badCertificateCallback = (X509Certificate cert, String host, int port) => true;


回答2:

You can get a valid SSL certificate for free from https://letsencrypt.org/



回答3:

Disabling antivirus solved my problem.