Флаттер https с самозаверяющим сертификатом - PullRequest
2 голосов
/ 07 января 2020

Я использую флаттер для соединения с java java реализацией сервера через https. Сначала я проверил его на работоспособность, используя только http.

Затем я переключился на https на стороне сервера и указал на свой самозаверяющий сертификат, созданный с помощью keytool.

Затем я попытался подключиться к нему с помощью пакета http дартс. В результате возникло следующее исключение ...

Необработанное исключение: HandshakeException: Ошибка рукопожатия в клиенте (Ошибка ОС: E / flutter (7370): CERTIFICATE_VERIFY_FAILED: самозаверяющий сертификат (рукопожатие. cc: 354))

Я предполагаю, что мне нужно настроить мой клиент на доверие к самозаверяющему сертификату моего сервера. Я посмотрел на ссылку APi и не мог понять, как этого добиться ...

Мой код дротика в моем приложении флаттера выглядит следующим образом ...

void testMessage() {
    var url = 'https://192.168.100.105:8443';
    var response = await http.post(url, body: "{\"message_name\": \"TestMessage\", \"contents\": { \"field1\":\"blah\", \"field2\":\"blah\" }}");
    print('Response status: ${response.statusCode}');
    print('Response body: ${response.body}');
}

1 Ответ

2 голосов
/ 07 января 2020

Во время разработки вы можете использовать обратный вызов badCertificateCallback HttpClient и просто вернуть true. Это примет все плохие сертификаты.

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

Чтобы принять указанный c плохой сертификат, вы можете поэкспериментировать с этим кодом здесь: https://github.com/dart-lang/http/issues/14#issuecomment -311184690

import 'dart:io';
import 'package:http/http.dart' as http;

bool _certificateCheck(X509Certificate cert, String host, int port) =>
    host == 'local.domain.ext'; // <- change

HttpClient client = new HttpClient()
    ..badCertificateCallback = (_certificateCheck);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...