Меню

android установка сертификата pfx

Как установить доверенный сертификат CA на Android-устройство?

Я создал свой собственный сертификат CA, и теперь я хочу установить его на устройство Android Froyo (HTC Desire Z), чтобы устройство доверяло моему сертификату.

Android хранит сертификаты CA в своем хранилище ключей Java в /system/etc/security/cacerts.bks . Я скопировал файл на свой компьютер, добавив свой сертификат с помощью portecle 1.5 и вернул его на устройство.

Теперь Android, похоже, не перезагружает файл автоматически. Я прочитал несколько сообщений в блоге, что мне нужно перезагрузить устройство. Это приведет к тому, что файл будет перезаписан оригинальным.

Моя следующая попытка состояла в том, чтобы установить сертификат с SD-карты, скопировав его и используя соответствующую опцию из меню настроек. Устройство сообщает мне, что сертификат установлен, но, видимо, он не доверяет сертификату. Более того, когда я пытаюсь скопировать хранилище ключей на свой компьютер, я все еще нахожу исходный cacerts.bks .

Итак, какой правильный способ установить мой собственный корневой сертификат CA на устройстве Android 2.2 в качестве доверенного сертификата? Есть ли способ сделать это программно?

Теперь с Android 4.0 это возможно. Я легко смог установить сертификат прокси-сервера Charles Web Debbuging на моем ненагруженном устройстве и успешно обнюхать трафик SSL.

Перед Android версии 4.0 с версией Android Gingerbread & Froyo был доступен единственный файл только для чтения (/system/etc/security/cacerts.bks), содержащий хранилище доверия со всеми сертификатами CA (‘system’), которым по умолчанию доверяли Android. Это и системные приложения, и все приложения, разработанные в Android SDK. Используйте эти инструкции по установке сертификатов CAcert на Android Gingerbread, Froyo, …

Начиная с Android 4.0 (Android ICS / «Ice Cream Sandwich», Android 4.3 «Jelly Bean» и Android 4.4 «KitKat»), системные доверенные сертификаты находятся в системном разделе (только для чтения) в папке «/ system / etc / Security / ‘как отдельные файлы. Тем не менее, пользователи теперь могут легко добавлять свои собственные «пользовательские» сертификаты, которые будут храниться в «/ data / misc / keychain / certs-added».

Системные сертификаты можно управлять на Android-устройстве в разделе «Настройки -> Безопасность -> Сертификаты ->« Система », тогда как доверенные сертификаты пользователя помечены в разделе« Пользователь ». При использовании доверенных сертификатов пользователей Android заставит пользователя Android-устройства реализовать дополнительные меры безопасности: использование PIN-кода, блокировки шаблонов или пароля для разблокировки устройства является обязательным при использовании сертификатов, предоставленных пользователем.

Установка сертификатов CAcert в качестве «доверенных» сертификатов очень проста. Установка новых сертификатов в качестве «системных доверенных» сертификатов требует больше работы (и требует корневого доступа), но имеет преимущество в том, чтобы избежать необходимости блокировки экрана Android.

Я потратил много времени, пытаясь найти ответ на этот вопрос (мне нужно, чтобы Android видел сертификаты StartSSL). Вывод: Android 2.1 и 2.2 позволяют импортировать сертификаты, но только для использования с WiFi и VPN. Пользовательский интерфейс для обновления списка доверенных корневых сертификатов отсутствует, но есть обсуждение добавления этой функции. Неясно, есть ли надежное решение для ручного обновления и замены файла cacerts.bks.

Подробности и ссылки: http://www.mcbsys.com/techblog/2010/12/android-certificates/ . В этой статье см. Ссылку на Android bug 11231 – вы можете добавить свой голос и запрос к этой ошибке.

Если вам нужен ваш сертификат для соединений HTTPS, вы можете добавить файл .bks в качестве необработанного ресурса в ваше приложение и расширить DefaultHttpConnection, чтобы ваши сертификаты использовались для соединений HTTPS.

Руководство, связанное здесь , вероятно, ответит на исходный вопрос без необходимости программирования пользовательского SSL-коннектора.

Читайте также:  настройки вог на русском

Нашел очень подробное руководство по импорту корневых сертификатов, которое фактически поможет вам установить надежные сертификаты CA на разные версии устройств Android (среди других устройств).

Загрузить: файл cacerts.bks с вашего телефона.

Adb pull /system/etc/security/cacerts.bks cacerts.bks

Загрузите файл .crt из сертифицирующего органа, который вы хотите разрешить.

Измените файл cacerts.bks на своем компьютере с помощью поставщика BouncyCastle

Загрузите файл cacerts.bks обратно на свой телефон и перезагрузитесь.

Ниже приведено более подробное поэтапное обновление предыдущих телефонов Android: как обновить хранилище ключей для проверки подлинности безопасности HTTPS на устройстве pre-android-4.0

То, что я сделал, чтобы использовать сертификаты startssl, было довольно просто. (На моем корневом телефоне)

Я скопировал /system/etc/security/cacerts.bks на мою sdcard

Пошел на portecle.sourceforge.net и запустил portecle непосредственно с веб-страницы.

Открыл мой файл cacerts.bks с моей SD-карты (ничего не вводил при запросе пароля)

Выберите import в portacle и откройте файл sub.class1.server.ca.crt, в моем случае у него все уже было ca.crt, но, возможно, вам тоже нужно установить его.

Сохраненный хранилище ключей и скопировал его baxck в /system/etc/security/cacerts.bks (я сделал резервную копию этого файла сначала на всякий случай)

Перезагрузите мой телефон, и теперь я могу показать свой сайт, используя сертификат startssl без ошибок.

Существует более простое решение для этого, чем здесь, или в связанных потоках. Если вы используете веб-просмотр (как и я), вы можете добиться этого, выполнив в нем функцию JAVASCRIPT. Если вы не используете веб-просмотр, вы можете создать скрытую для этой цели. Вот функция, которая работает практически в любом браузере (или веб-просмотре) для запуска установки (обычно через общий репозиторий сертификатов os, в том числе на Droid). Он использует хороший трюк с iFrames. Просто передайте URL-адрес в файл .crt для этой функции:

Трюк iframe работает с Droids с API 19 и выше, но более старые версии веб-браузера не будут работать так. Общая идея все еще работает – просто загрузите / откройте файл с помощью веб-браузера, а затем оставьте его. Это может быть более легкое и универсальное решение (в настоящее время java):

Обратите внимание, что instance_ является ссылкой на Activity. Это прекрасно работает, если вы знаете URL-адрес сертификата. В моем случае, однако, я решаю это динамически с помощью программного обеспечения на стороне сервера. Мне пришлось добавить достаточный объем дополнительного кода для перехвата URL-адреса перенаправления и вызвать его таким образом, который не вызвал бы сбоя на основе сложности с потоками, но я не буду добавлять сюда эту путаницу …

Вот альтернативное решение, которое фактически добавляет ваш сертификат во встроенный список сертификатов по умолчанию: доверять всем сертификатам с использованием HttpClient через HTTPS

Однако он будет работать только для вашего приложения. Невозможно программно сделать это для всех приложений на устройстве пользователя, так как это будет угрозой безопасности.

источник

Как установить сертификат trusted CA на Android-устройство?

Я создал свой собственный сертификат CA, и теперь я хочу установить его на своем устройстве Android Froyo (HTC Desire Z), чтобы устройство доверяло моему сертификату.

Android хранит сертификаты CA в своем хранилище ключей Java в /system/etc/security/cacerts.bks . Я скопировал файл на свой компьютер, добавил свой сертификат с помощью portecle 1.5 и подтолкнул его обратно к устройству.

теперь Android, похоже, не перезагружает файл автоматически. Я прочитал в нескольких сообщениях в блоге, что мне нужно перезагрузите устройство. Это приводит к тому, что файл снова перезаписывается оригинальным.

Читайте также:  server 2012 r2 настройка политик для всего домена

моя следующая попытка состояла в том, чтобы установить сертификат с SD-карты, скопировав его и используя соответствующую опцию из меню настроек. Устройство говорит мне, что сертификат был установлен, но, по-видимому, он не доверяет сертификату. Кроме того, когда я пытаюсь скопировать хранилище ключей на свой компьютер, я все еще нахожу оригинальный запас cacerts.bks .

Итак, каков правильный способ установите мой собственный корневой сертификат CA на устройстве Android 2.2 в качестве доверенного сертификата? Есть ли способ сделать это программно?

7 ответов:

до Android KitKat вы должны запустить свое устройство для установки новых сертификатов.

от Android KitKat (4.0) до нуги (7.0) это возможно и легко. Я смог установить Charles Web Debbuging Proxy cert на мое некорневое устройство и успешно нюхать SSL-трафик.

перед Android версии 4.0, с Android версии пряник & Froyo, был один файл только для чтения (/system/etc/security / cacerts.bks), содержащий хранилище доверия со всеми сертификатами CA (‘system’), которым доверяют по умолчанию на Android. Это используют как системные приложения, так и все приложения, разработанные с помощью Android SDK. Используйте эти инструкции по установке сертификатов CAcert на Android Gingerbread, Froyo, .

начиная с Android 4.0 (Android ICS / ‘Ice Cream Sandwich’, Android 4.3 ‘Jelly Bean’ и Android 4.4 ‘KitKat’), система доверяет сертификаты находятся в системном разделе (только для чтения) в папке «/system/etc/security/ » в виде отдельных файлов. Однако теперь пользователи могут легко добавлять свои собственные «пользовательские» сертификаты, которые будут храниться в «/data/misc/keychain/certs-added».

установленные системой сертификаты могут управляться на устройстве Android в разделе «Настройки» — > «Безопасность» — > «сертификаты» — > «Система», тогда как доверенные сертификаты пользователя находятся в разделе «пользователь». При использовании доверенного пользователя сертификаты, Android заставит пользователя устройства Android реализовать дополнительные меры безопасности: использование PIN-кода, шаблона блокировки или пароля для разблокировки устройства являются обязательными при использовании пользовательских сертификатов.

установка сертификатов CAcert в качестве «доверенных пользователей» — сертификаты очень просты. Установка новых сертификатов в качестве «доверенных системе» — сертификаты требуют больше работы (и требует корневого доступа), но он имеет преимущество избежать блокировки экрана Android требование.

начиная с Android N и далее он становится немного сложнее, см. Этот отрывок из Чарльз прокси-сайт:

начиная с Android N, вам нужно добавить конфигурацию в свое приложение, чтобы пусть он доверяет SSL-сертификатам, сгенерированным Charles SSL Proxying. Это означает, что вы можете использовать SSL-прокси только с приложениями, которые вы управление.

чтобы настроить приложение на доверие Чарльзу, вы нужно добавить Файл конфигурации сетевой безопасности для вашего приложения. Этот файл может переопределите системное значение по умолчанию, разрешив приложению доверять установленному пользователю Сертификаты CA (например, корневой сертификат Charles). Вы можете указать что это применимо только в отладочных сборках вашего приложения, так что производственные сборки используют профиль доверия по умолчанию.

Добавить файл res / xml / network_security_config.xml для вашего приложения:

затем добавить ссылку на этот файл в манифест вашего приложения выглядит следующим образом:

Я потратил много времени, пытаясь найти ответ на этот вопрос (мне нужен Android, чтобы увидеть сертификаты StartSSL). Вывод: Android 2.1 и 2.2 позволяют импортировать сертификаты, но только для использования с WiFi и VPN. Нет пользовательского интерфейса для обновления списка доверенных корневых сертификатов, но есть обсуждение о добавлении этой функции. Неясно, существует ли надежный обходной путь для ручного обновления и замены cacerts.файл БКС.

Читайте также:  настройка звука для xsplit

подробности и ссылки: http://www.mcbsys.com/techblog/2010/12/android-certificates/. в этом посте, смотрите ссылку на Android ошибка 11231—вы можете добавить свой голос и запрос к этой ошибке.

Если вам нужен сертификат для HTTPS-соединений, вы можете добавить его .файл bks в качестве необработанного ресурса для вашего приложения и расширения DefaultHttpConnection, чтобы ваши сертификаты использовались для HTTPS-соединений.

проводник связан здесь вероятно, ответит на исходный вопрос без необходимости программирования пользовательского соединителя SSL.

найдено очень подробное руководство по импорту корневых сертификатов, которое фактически позволяет вам устанавливать доверенные сертификаты CA на разных версиях устройств Android (среди других устройств).

в основном вам потребуется:

скачать: cacerts.файл bks с вашего телефон.

adb pull / system/etc/security / cacerts.bks cacerts.БКС

скачать .crt-файл из центра сертификации, который вы хотите разрешить.

изменить cacerts.файл bks на вашем компьютере с помощью BouncyCastle Provider

загрузить cacerts.файл bks возвращается на ваш телефон и перезагружается.

то, что я сделал, чтобы иметь возможность использовать сертификаты startssl, было довольно легко. (на моем корневом телефоне)

Я скопировал /system/etc/security / cacerts.БКС на мою почту

пошел portecle.sourceforge.net и запустил portecle прямо с веб-страницы.

открыл мои cacerts.файл bks с моей SD-карты (ничего не введено при запросе пароля)

выберите Импорт в portacle и открыл sub.class1.server.ca.crt, im мой случай он уже имел ca.ЭЛТ, но, возможно, Вам тоже нужно установить это.

сохранил хранилище ключей и скопировал его baxck в /system/etc/security / cacerts.БКС (я сделал резервную копию этого файла, сначала на всякий случай)

перезагрузил мой телефон, и теперь я могу вист мой сайт, который использует сертификат startssl без ошибок.

есть гораздо более простое решение для этого, чем опубликовано здесь или в связанных потоках. Если вы используете webview (как и я), вы можете достичь этого, выполнив в нем функцию JAVASCRIPT. Если вы не используете WebView, вы можете создать скрытый для этой цели. Вот функция, которая работает практически в любом браузере (или webview) для начала установки ca (обычно через общий репозиторий сертификатов ОС, в том числе на дроиде). Он использует хороший трюк с iFrames. Просто передайте url-адрес a .crt файл для этой функции:

трюк iframe работает на дроидах с API 19 и выше, но более старые версии webview не будут работать так. Однако общая идея все еще работает — просто загрузите/откройте файл с помощью webview, а затем позвольте ОС взять на себя. Это может быть более простым и универсальным решением (в реальной java сейчас):

обратите внимание, что instance_ является ссылкой на действие. Это прекрасно работает если вы знаете URL-адрес сертификата. В моем случае, однако, я решаю это динамически с помощью программного обеспечения на стороне сервера. Мне пришлось добавить изрядное количество дополнительного кода, чтобы перехватить url-адрес перенаправления и вызвать его таким образом, чтобы не вызвать сбой на основе усложнения потока, но я не буду добавлять всю эту путаницу здесь.

вот альтернативное решение, которое фактически добавляет сертификат в список сертификатов по умолчанию: доверие всем сертификатам с помощью HttpClient через HTTPS

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

источник

Добавить комментарий

Adblock
detector