Как я могу использовать собственные корневые центры сертификации во Flutter на Android?Android

Форум для тех, кто программирует под Android
Anonymous
Как я могу использовать собственные корневые центры сертификации во Flutter на Android?

Сообщение Anonymous »

Я добавил свой собственный корневой сертификат CA в хранилище доверенных сертификатов Android (он отображается как сертификат безопасности «Пользователь» в списке сертификатов в приложении «Настройки»). Затем я настроил приложение Flutter и добавил в манифест дескриптор network-security-config, который содержит источник сертификата «user». Это позволяет приложению использовать мой собственный корневой сертификат CA из хранилища доверенных сертификатов Android.
Затем я сделал следующий запрос в приложении Flutter:

Код: Выделить всё

HttpClient client = HttpClient(context: SecurityContext.defaultContext);
HttpClientRequest request = await client.getUrl(url);
HttpClientResponse response = await request.close();
Однако это приводит к HandshakeException с основной ошибкой ОС: «CERTIFICATE_VERIFY_FAILED: самоподписанный сертификат в цепочке сертификатов».
Я попробовали следующее:
  • Сделали запрос, используя собственный код Java. => Это работает, как и ожидалось, без ошибок!
  • Сертификат добавлен в SecurityContext вручную с помощью setTrustedCertificatesBytes(...). => Это работает, но мне придется добавить сертификат в приложение вручную. (Я не нашел способа получить его из системного хранилища доверенных сертификатов.)
  • Заменил SecurityContext на SecurityContext(withTrustedRoots: true) или не сделал этого не указываю какие-либо. => Это тоже не работает. Та же ошибка, что и выше.
Поскольку HTTP-запрос Java работает должным образом, возможно, возникла проблема с http-клиентом Flutter. Есть ли способ заставить HTTP-клиент Flutter работать правильно и использовать существующий сертификат?

Подробнее здесь: https://stackoverflow.com/questions/790 ... on-android

Вернуться в «Android»