SSL - SecurityContext - необработанное исключение: FileSystemException: невозможно открыть файл - ошибка: такого файла или каталога нет, errno = 2 - PullRequest
0 голосов
/ 05 февраля 2019

Когда я пытаюсь установить сертификат, я получаю сообщение об ошибке:

E/flutter ( 7195): [ERROR:flutter/lib/ui/ui_dart_state.cc(148)] Unhandled Exception: FileSystemException: Cannot open file, path = 'assets/ssl/STAR_octopusspace_com.crt' (OS Error: No such file or directory, errno = 2) E/flutter ( 7195): #0 _File.throwIfError (dart:io/file_impl.dart:643:7) E/flutter ( 7195): #1 _File.openSync (dart:io/file_impl.dart:487:5) E/flutter ( 7195): #2 _File.readAsBytesSync (dart:io/file_impl.dart:547:18) E/flutter ( 7195): #3 _SecurityContext.useCertificateChain (dart:io/runtime/binsecure_socket_patch.dart:175:40)

, и вот как выглядит мой код: a busy cat

Я не уверен, куда мне обращатьсяположи мои файлы.Любые идеи?

Я объявил папку ssl в моем файле yaml.

  uses-material-design: true
  assets:
      - assets/ssl/
      - assets/graphics/

ОБНОВЛЕНИЕ:

Изменен код на это:

    final List<int> certificateChainBytes =
        (await rootBundle.load('assets/ssl/STAR_octopusspace_com.crt')).buffer.asInt8List();
    context.useCertificateChainBytes(certificateChainBytes);
    final List<int> keyBytes =
    (await rootBundle.load('assets/ssl/client_octopusspace.key')).buffer.asInt8List();
    context.usePrivateKeyBytes(keyBytes);

но теперь я получаю эту ошибку:

E / flutter (11733): [ОШИБКА: flutter / lib / ui / ui_dart_state.cc (148)] Необработанное исключение: TlsException:Сбой в usePrivateKeyBytes (Ошибка ОС: E / флаттер (11733): KEY_VALUES_MISMATCH (ssl_cert.cc:494), ERRNO = 0) E / флаттер (11733): # 0 _SecurityContext.usePrivateKeyBytes (дротик: И.О. / выполнение / binsecure_socket_patch.dart:164: 50)

1 Ответ

0 голосов
/ 06 февраля 2019

Вот что у меня сработало:

final SecurityContext context = SecurityContext.defaultContext;

final ByteData crtData = await rootBundle.load('assets/ssl/STAR_octopusspace_com.crt');
context.setTrustedCertificatesBytes(crtData.buffer.asUint8List());

final ByteData authoritiesBytes = await rootBundle.load('assets/ssl/STAR_octopusspace_com.ca-bundle');
context.setClientAuthoritiesBytes(authoritiesBytes.buffer.asUint8List());

final ByteData keyBytes = await rootBundle.load('assets/ssl/client_octopusspace.key');
context.usePrivateKeyBytes(keyBytes.buffer.asUint8List());

httpClient = HttpClient(context: context);

Спасибо всем:)

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