Сервер проверки подлинности сертификата клиента Flutter закрывает соединение - PullRequest
0 голосов
/ 27 апреля 2020

Я пытался заставить себя трепетать, добавляя клиентские сертификаты для запроса на сторонний сервер. Когда я выполняю следующий запрос, используя curl (и ввожу правильный пароль для закрытого ключа):

curl -v --cert client.crt --key client.key  <url>

, я получаю правильный ответ. Однако, когда я пытаюсь сделать это во флаттере:

  final certificate = await rootBundle.load('assets/client.crt');
  final key = await rootBundle.load('assets/client.key');

  final context = SecurityContext.defaultContext;
  context.useCertificateChainBytes(certificate.buffer.asUint8List());
  context.usePrivateKeyBytes(key.buffer.asUint8List(), password: '<password>');
  final client = HttpClient(context: context);
  final httpClient = IOClient(client);

  final response = await httpClient.get('<url>');

Сервер немедленно закрывает соединение, со следующим исключением:

[VERBOSE-2:ui_dart_state.cc(157)] Unhandled Exception: Connection closed before full header was received
#0      IOClient.send (package:http/src/io_client.dart:65:7)
<asynchronous suspension>
#1      BaseClient._sendUnstreamed (package:http/src/base_client.dart:176:38)
#2      BaseClient.get (package:http/src/base_client.dart:35:7)
#3      main (package:page_route/main.dart:25:37)
<asynchronous suspension>
#4      _runMainZoned.<anonymous closure>.<anonymous closure> (dart:ui/hooks.dart:257:25)
#5      _rootRun (dart:async/zone.dart:1184:13)
#6      _CustomZone.run (dart:async/zone.dart:1077:19)
#7      _runZoned (dart:async/zone.dart:1619:10)
#8      runZonedGuarded (dart:async/zone.dart:1608:12)
#9      _runMainZoned.<anonymous closure> (dart:ui/hooks.dart:249:5)
#10     _startIsolate.<anonymous closure> (dart:isolate-patch/isolate_patch.dart:301:19)
#11     _RawReceivePortImpl._handleMessage (dart:isolate-patch/isolate_patch.dart:168:12)

Кто-нибудь знает, что я здесь не так делаю

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...