Как я могу использовать собственные корневые центры сертификации во 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»