Моя цель:
Создание конфигурации EAP WiFi - включая сертификат CA - в Android программно.
Проблема:
Как установить сертификат CA программно (а затем ссылаться на этот сертификат в конфигурации EAP WiFi)?
Я нашел очень полезную ссылку, которая позволяет мне создавать и сохранять конфигурации EAP WiFi здесь:
Как программно создавать и считывать конфигурации WEP / EAP WiFi в Android?
Однако это предполагает, что вы уже установили сертификат CA на устройстве. Я хотел бы установить сертификат в своем приложении - либо из ресурсов приложения, либо отправленных с сервера.
Это вообще возможно? (Укоренение не вариант в этом случае.)
Если да, то как?
Дополнительная информация ...
Я также нашел способ добавить сертификат в хранилище ключей:
https://stackoverflow.com/a/4490543/1172101
Однако это используется специально для создания защищенного сокета и подключения через HTTPS. Я хочу использовать сертификат для WiFi.
К сожалению, мне еще не удалось найти способ установить сертификат CA программно - из приложения.
Однако в Android можно установить сертификат через веб-браузер. Таким образом, решение (на данный момент) заключается в следующем:
Запустите намерение открыть в веб-браузере URL-адрес, который идет непосредственно к сертификату CA.
Это работает, но есть некоторые проблемы:
- Пользователь должен назвать сертификат. Это сложная задача, потому что мы добавляем конфигурацию WiFi программно. Таким образом, мы должны попросить пользователя дать сертификату то же имя.
- Пользователь должен ввести пароль. Если у них не установлен пароль, пользователь создаст его и введет его дважды. Если они установили пароль безопасности, пользователь должен будет запомнить этот пароль и ввести его.
- Предполагая, что пользователь успешно завершил эти шаги, он остается висеть в браузере.
Это приводит к нескольким вопросам:
- В моем приложении есть способ заставить имя сертификата, который пользователь устанавливает через браузер?
- Можно ли из моего приложения узнать, когда установка сертификата была завершена, а затем снова сфокусироваться на моем приложении?
Просто дайте мне знать, если вам нужны какие-либо разъяснения.