Android установка сертификата cer

Как вы импортируете сертификаты CA на телефон Android?

Я хочу подключиться к беспроводной сети моего университета, используя мой Nexus One. Когда я иду в «Добавить сеть Wi-Fi» в настройках беспроводной сети, я заполняю SSID сети, выбираю 802.1x Enterprise для безопасности и заполняю все.

Проблема в том, что для сертификации в нашем университете используется сертификат Thawte Premium Server CA.

Когда я нажимаю раскрывающийся список для сертификата CA, я ничего не получаю в списке (только N / A)

Теперь у меня есть сертификат (Thawte Premium Server CA.pem) и я переместил его на свою SD-карту, но он не выглядит так, как будто Android автоматически обнаруживает его.

Где я должен положить сертификат, чтобы диспетчер беспроводной связи Android распознал его. Другими словами, как я могу импортировать сертификат CA, чтобы Android распознал его на телефоне и отобразил его в раскрывающемся списке CA Certificate.

Спасибо за любую помощь,

PS мой телефон не рутирован

РЕДАКТИРОВАТЬ : После некоторых исследований, похоже, что вы можете установить сертификаты, перейдя в настройки вашего телефона> Расположение и безопасность> Установка с SD-карты

К сожалению, похоже, что единственным допустимым расширением файла является .p12. Не похоже, что на данный момент есть способ импортировать файлы .cer или .pem (которые являются единственными двумя файлами, которые поставляются с сертификатами Thawte).

Похоже, что вы можете использовать конвертер для преобразования ваших файлов .cer или .pem в .p12, однако файл ключа необходим.

Я не знаю, где взять этот файл ключей для сертификатов Thawte.

Источник

Ручная установка сертификата на устройствах с Android 11

Чтобы иметь возможность фильтровать HTTPS-трафик (что крайне важно, так как большинство рекламы использует HTTPS), AdGuard необходимо установить сертификат в пользовательское хранилище сертификатов на вашем устройстве. На более старых версиях Android ОС это можно было сделать автоматически во время первого запуска приложения, либо позднее через настройки, от пользователя требовалась всего пара нажатий. К сожалению, в Android 11 автоматическая установка сертификата более невозможна и теперь требуется ручная установка.

Чтобы вручную установить сертификат AdGuard:

1) Перейдите на главный экран приложения и нажмите на строку Фильтрация HTTPS (она будет подсвечена красным, если требуется установка сертификата).

2) Включите переключатель в верху открывшегося экрана.

3) Появится новый экран, на нём дважды нажмите кнопку Далее и затем Сохранить сейчас, когда вам будет предложено загрузить сертификат AdGuard.

4) После окончания загрузки сертификата вы увидите новый экран. Нажмите кнопку Откройте настройки безопасности.

5) Это вызовет переход в системные настройки. Прокрутите экран вниз до раздела Дополнительно, перейдите в него и далее в раздел Шифрование и учётные данные.

6) Нажмите кнопку Установка сертификатов и затем кнопку Сертификат центра сертификации.

7) Появится окно с предупреждением. Прочитайте его и нажмите Всё равно установить, чтобы продолжить.

8) Выберите только что загруженный сертификат AdGuard. Вы должны увидеть всплывающее уведомление об успешной установке сертификата.

Читайте также:  Способы слежки за телефоном андроид

9) Сертификат AdGuard успешно установлен и HTTPS-фильтрация работает!

Если вы обновляете систему с Android 10 до Android 11, есть вероятность, что установленный ранее автоматически сертификат будет принят системой. В противном случае, строчка HTTPS фильтрация на главном экране приложения будет подсвечена красным и вам понадобится установить сертификат вручную по инструкции, приведённой выше.

Источник

Установка собственного корневого сертификата в Android и запуск Citrix XenApp Web Interface

В принципе, мы с shoguevara довольно давно заморачивались вопросом установки корневого сертификата в Android устройство и даже находили парочку не самых тривиальных инструкций, но до этого в таком действии надобности не было. Надобность же появилась после приобретения планшета на Android.

Немножко предыстории:

Стоит у нас в конторе Citrix XenApp для обеспечения удалённой работы из офиса. Что это за зверь и с чем его едят рассказывать не будем — кому это надо, те давно в курсе.
В этой совместной с записи мы хотим рассказать об установке корневого сертификата и настройке клиентской части — Citrix Receiver для Android.

В принципе, клиент не самый убогий — пользоваться можно, а если Вы где-то в поездке, а на руках только телефон на Android или планшет — это единственный выход для быстрого подключения и исправления что-либо через рабочий компьютер.
Вроде бы софтина не особо мудрёная да и настроек особо много не требует, а если Вы используете веб-интерфейс для запуска приложений, как это сделано в нашей организации, то и совсем никаких…
Но не все бывает так безоблачно!

Что же за проблемы могли возникнуть?

Для организации такого рода архитектуры удалённого доступа довольно часто используются сертификаты, которые подписаны центрами не входящими в список стандартных. Почему Google такие нехорошие, и не включили в свою ОСь такую простую функцию, (наряду с такой, опять же, нужной функцией, как возможность прописать прокси-сервер) как установка дополнительных корневых сертификатов ЦА, тут мы обсуждать не собираемся.
Первым признаком того, что сервер использует самоподписанный сертификат является то, что, когда Вы открываете, откуда бы то ни было веб-ресурс с помощью, например, браузера Mozilla Firefox, программа выдает сообщение о том, что не может сама принять решение о том доверять ли сертификату для установления защищённого соединения или нет — она предоставляет право выбора Вам.
Если у вас наблюдается такая картина, то эта статья как раз для Вас!

Так что же все-таки надо, чтобы запустить через Citrix Receiver приложения опубликованные на Citrix XanApp вашего предприятия?

В первую очередь, как оказалось, необходимо установить Mozilla Firefox для Android. Очень странно, но ни один другой браузер не передаёт нужный для подключения файл (launch.ica) в программу-клиент. Знаем только то, что с Firefox все работает нормально.

Во вторую очередь нужна сама программа-клиент. Тут на Android Market у нас есть выбор: стабильный Citrix Receiver, либо находящийся на этапе тестирования Citrix Labs Receiver. Второй у нас не захотел принимать сертификат ни в какую, первый же — стабильный, после бессонной ночи таки у нас и заработал.

В-третьих, необходимо иметь root-доступ к вашему устройству, либо возможность извлекать и записывать обратно файлы через adb, хотя, в этом случае тоже требуется root-доступ (как его настроить Вы сможете узнать потратив немного времени на просмотр результатов, который выдал вам Google на запрос вида » root access howto» или » adb configure howto»).

Читайте также:  Все для андроид mobi

Вопросом настройки adb мы заморачиваться, опять таки, не стали, так как предпочитаем работать напрямую через файл-менеджеры с системой. В любом случае, в сети довольно много информации по этому поводу (русскоязычный ресурс, на котором больше всего информации такого плана — http://4pda.ru/forum, англоязычный — http://forum.xda-developers.com). В случае, если Вы будете использовать прямой доступ к системным файлам, то нужен файловый менеджер, который умеет использовать root-права (например, Root Explorer).

В-четвертых, нужна машина с любым из популярных Linux-дистрибутивов и установленной Java-машиной от Oracle (мы использовали Ubuntu 10.10 с установленным JRE).

И последнее в списке, но далеко не последнее по значимости — сам корневой сертификат центра сертификации (пусть он будет называться CompanyCA.crt).

От требований (если они все выполнены) переходим к действию.

Для удобства будем перечислять все по пунктам.

1. Заходим с устройства на Android Market и устанавливаем Firefox.
2. Заходим с устройства на Android Market и устанавливаем Citrix Receiver.
3.1.1 (3.1.х для тех кто предпочитает прямой доступ) С помощью файлового менеджера копируем файл /system/etc/security/cacerts.bks cacerts.bks на карту SD.
3.1.2 Подключаем устройство как накопитель к компьютеру с Linux.
3.1.3 Копируем файл cacerts.bks с корня карточки в вашу домашнюю папку.
3.2.1 (adb) копируем сертификат
$ adb pull /system/etc/security/cacerts.bks cacerts.bks

4. Этот пункт предполагает, что Вы уже установили и настроили JRE 1.6 и прописана переменная окружения JAVA_HOME (в моем случае JAVA_HOME=/usr/lib/jvm/java-6-sun/).
Скачиваем пакет bouncycastle.org/download/bcprov-jdk16-146.jar и кидаем его в папку $JAVA_HOME/jre/lib/ext/
Если у вас установлен JDK, то этот пакет, надо так же закинуть в папку /usr/lib/jvm/java-6-openjdk/jre/lib/ext
wget bouncycastle.org/download/bcprov-jdk16-146.jar
sudo cp bcprov-jdk16-146.jar $JAVA_HOME/jre/lib/ext/bcprov-jdk16-146.jar
# или sudo cp bcprov-jdk16-146.jar /usr/lib/jvm/java-6-sun/jre/lib/ext/bcprov-jdk16-146.jar

5. Кидаем файл сертификата CompanyCA.crt так же в домашнюю папку. Если его у Вас нет, но Вы соглашались принять сертификат при переходе на веб-интерфейс XenApp, то его можно экспортировать из Firefox. Как это сделать — подскажет Google. Можем лишь уточнить, что шифрование нужно X.509 PEM.

6. Скачиваем и устанавливаем Android SDK (если Вы не планируете использовать adb, то этот шаг можно пропустить):
wget dl.google.com/android/android-sdk_r10-linux_x86.tgz
tar -xvzf android-sdk_r10-linux_x86.tgz
sudo mv android-sdk-linux_x86 /usr/lib/android-sdk-linux_x86
Запускать что-либо из комплекта для нашей задачи не требуется. Но нужно прописать исполняемые файлы SDK в переменных окружения export PATH=$:/usr/lib/android-sdk-linux_x86/tools.
В нашем случае вопрос с переменными окружения решается добавлением в конец файла

/.bashrc строчек
export PATH=$:/usr/lib/android-sdk-linux_x86/tools
export JAVA_HOME=/usr/lib/jvm/java-6-sun/jre

7. Открываем консоль и выполняем команду
keytool -keystore cacerts.bks -storetype BKS -provider org.bouncycastle.jce.provider.BouncyCastleProvider -storepass changeit -importcert -trustcacerts -alias CACERT -file CompanyCA.crt

Будьте внимательны — не меняйте параметр -storepass changeit, там действительно такой пароль)

В ответ на эту команду Вы должны получить информацию о сертификате и запрос «Trust this certificate? [no]: » — соответственно отвечаем «y».
Все, наш файл подготовлен. Теперь нужно загрузить его на устройство.

8.1.1 (прямой доступ) Подключаем устройство как накопитель к компьютеру;
8.1.2 Загружаем на карту файл cacerts.bks;
8.1.3 Переносим с помощью менеджера файлов cacerts.bks из папки /sdcard в папку /system/etc/security/, предварительно примонтировав её для записи;
8.2.1 (adb) Монтируем систему для записи:
$ adb shell mount -o remount,rw /system;
8.2.2 Загружаем файл:
$ adb push cacerts.bks /system/etc/security/;
8.2.2 Монтируем систему только для чтения:
$ adb shell mount -o remount,ro /system.

На этом трудная часть пройдена. Осталась пара «финтов ушами».

9. Перезагружаем устройство.

10. Запускаем Firefox и открываем страницу веб-доступа.
Появится приблизительно такая картина:

Читайте также:  Building android on mac

Тут нам надо нажать на ссылку «Already installed» в верхней части экрана;

11. Выбираем приложение из списка и пробуем запустить;

Источник

Авторизация с помощью клиентских SSL сертификатов в IOS и Android

Протокол безопасной передачи данных SSL (Secure Sockets Layer) помимо обеспечения безопасной передачи данных так же позволяет реализовать авторизацию клиентов при помощи клиентских SSL сертификатов. Данная статья является практическим руководством по реализации данного вида авторизации в мобильных приложениях на IOS и Android.

Процесс организации работы сервера обеспечивающего такой вид авторизации в статье не рассматривается, однако в конце приведены ссылки по данной тематике.

Процесс авторизации выглядит следующим образом. При переходе клиента в закрытую область сервер запрашивает у клиента сертификат, если проверка прошла успешно то клиент получает доступ к закрытому контенту в ином случае клиент может получить ошибку “No required SSL certificate was sent”.

Для организации подключения мы сгенирировали клиентский сертификат, а так же создали запрос на подписание сертификата в результате чего получили файл client.csr. Далее мы отправили данный файл поставщику услуг и получили наш подписанный клиентский сертификат необходимый для аутентификации на удаленном сервере.

Тестирование подключения может быть осуществлено при помощи утилиты curl.

curl ­­cert client.crt ­­key client.key ­k someserive.com

Однако стоит заметить, что в последняя версия curl 7.30.0 в OS X сломана и не может быть использована для организации тестирования (http://curl.haxx.se/mail/archive-2013-10/0036.html).

Для передачи клиентского сертификата мы будем использовать файл в формате PKCS#12. В файлах PKCS#12 хранятся одновременно и закрытый ключ, и сертификат (разумеется в зашифрованном виде). Примерная организация PKCS#12 файла показана на рисунке.

Сконвертировать Ваш client.crt в файл формата PKCS#12 можно при помощи следующей команды:

openssl pkcs12 ­export ­in client.crt ­inkey client.key ­out client.p12

После того как мы получили файл в формате PKCS#12 можно переходить к разработке и тестированию нашего мобильного приложения. Начнем с IOS.

1. Реализуем IOS версию приложения

Необходимо подключить к Вашему проекту Security.Framework
Для осуществления запроса нам необходимо извлечеть из PKCS#12 цифровой сертификат и ассоциированный с ним приватный ключ (SecIdentityRef). Наличие данного объекта позволит нам получить соответствующий NSURLCredential.
Итак реализуем функецию extractIdentityAndTrust.

Производим извлечение при помощи функции SecPKCS12Import, незабываем указать пароль к серитификату.
Далее реализуем делегат canAuthenticateAgainstProtectionSpace, вызов данного делегата позволяет нам определить свойства сервера, а именно протокол, механизм авторизации. У нас реализация этого делегата будет простой, укажем, что обрабатываем любой способ аутентификации представленный сервером.

Обработаем возможные ошибки:

Теперь перейдем к реализации непосредственно механизма аутентификации. Реализуем делегат didRecieveAuthentificationChallenge:

Загружаем наш сертификат, извлекаем из него нужные нам данные, создаем NSURLCredential, передаем нужную информацию, сохраняем данные аутентификации только в контексте текущей сессии.

Ну и для полноты картины приведу код подготавливающий NSURLConnection:

Реализацию делегата didReceiveData приводить не буду.

2. Реализуем Android версию приложения

Начну сразу с кода:

Получаем экземпляр соответствующего KeyStore в нашем случае это (PKCS12), загружаем из ресурсов наш сертификат, вторым аргументом указываем пароль. Далее создаем экземпляр SSLSocketFactory, использую собственную реализацию SSLSocketFactory, позволяющую инициализировать SSL контекст с использованием нашего сертификата. Код фабрики приведен чуть ниже. Далее конфигурируем параметры подключения, регистрируем нашу фабрику, указываем порт на который будем посылать запрос, формируем соответсвующий POST и выполняем запрос.

Заключение.

Мы рассмотрели как производить авторизацию по SSL с использованием клиентского сертификата.

Источник

Оцените статью