Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

SSL handshake error on self-signed cert in Flutter

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.

like image 688
Armen Kh. Avatar asked Sep 09 '17 22:09

Armen Kh.


2 Answers

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

_client = new HttpClient();
_client.badCertificateCallback = (X509Certificate cert, String host, int port) => true;
like image 86
Armen Kh. Avatar answered Sep 20 '22 08:09

Armen Kh.


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

like image 37
Collin Jackson Avatar answered Sep 20 '22 08:09

Collin Jackson