Обновление корневых сертификатов android

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

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

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

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

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

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

10 ответов

До Android KitKat вам необходимо выполнить рутирование устройства, чтобы установить новые сертификаты.

С Android KitKat (4.0) до Nougat (7.0) это возможно и просто. Мне удалось установить сертификат Charles Web Debbuging Proxy на мое некорневое устройство и успешно прослушивать 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 N становится немного сложнее, см. этот отрывок из Прокси-сайт Charles:

Начиная с 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.bks.

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

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

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

В основном вам необходимо:

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

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

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

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

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

Вот более подробные пошаговые инструкции по обновлению более ранних версий телефонов Android: Как обновить хранилище ключей центра сертификации безопасности HTTPS в версиях до Android- 4.0 устройство

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

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

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

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

Я скопировал /system/etc/security/cacerts.bks на свою SD-карту

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

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

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

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

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

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

Эти шаги работали для меня:

  1. Установите приложение Dory Certificate для Android на свое мобильное устройство: https: //play.google.com/store/apps/details?id=io.tempage.dorycert&hl=en_US
  2. Подключите мобильное устройство к ноутбуку с помощью USB-кабеля.
  3. Создайте корневую папку во внутренней памяти телефона, скопируйте файл сертификата в эту папку и отсоедините кабель.
  4. Откройте приложение Dory Certificate для Android, нажмите круглую кнопку [+] и выберите правильный вариант «Импортировать сертификат файла».
  5. Выберите формат, укажите имя (я ввел то же, что и имя файла), просмотрите файл сертификата и нажмите [OK].
  6. Появятся три карты. Я проигнорировал карту, на которой была только кнопка [ПОДПИСАТЬ CSR], и щелкнул кнопку [УСТАНОВИТЬ] на двух других картах.
  7. Я обновил веб-приложение PWA, которое я не открывал в своем мобильном Chrome (он размещен на локальном веб-сервере IIS) и вуаля! Нет предупреждающего сообщения о Chrome. Зеленый замок был там. Это было сработало.
Читайте также:  Лучшие платные видеоредакторы для андроид

В качестве альтернативы я нашел следующие варианты, которые мне не нужно было пробовать самому, но которые выглядели простыми:

Наконец, это может быть неактуальным, но, если вы хотите создать и настроить самозаверяющий сертификат (с помощью mkcert) для своего приложения (веб-сайта) PWA, размещенного на локальном веб-сервере IIS, я следил за этой страницей:

Спасибо и надеюсь, что это поможет !! 🙂

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

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

Вы пробовали: Настройки -> Безопасность -> Установить с SD-карты? — Александр Эггер 20 дек.

Я не уверен, почему это еще не ответ, но я просто последовал этому совету, и он сработал.

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

Источник

Расслабьтесь. Владельцы старых Android-смартфонов не лишатся доступа к миллионам сайтов

Короткий период программной поддержки никогда особенно не страшил пользователей Android. Большинству из них было достаточно того, чтобы смартфон по-прежнему работает даже спустя два года после выхода, позволяет скачивать любые приложения из Google Play, а при необходимости не чинит препятствий для перепрошивки. Поэтому новость о том, что в 2021 году пользователи Android 7.1.1 и более ранних версий ОС лишатся доступа к более чем 200 миллионам сайтов из-за прекращения поддержки системного сертификата безопасности, прошла почти незамеченной. Но это и к лучшему.

Прекращение поддержки сертификата DST Root X3 на Android 7.1.1 отменяется

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

Если вы не понимаете, о чём идёт речь, вот вам небольшой экскурс. Около месяца назад стало известно, что компания Let’s Encrypt, разработчик сертификата безопасности DST Root X3, собирается прекратить его поддержку. Это специальный компонент, который отвечает за защиту пользователей при посещении сайтов в интернете, блокируя фишинговые и уведомляя об отсутствии протокола шифрования и, следовательно, опасности ввода персональных данных, которые могут быть либо перехвачены, либо прочитаны владельцем ресурса.

Сертификаты безопасности на Android

DST Root X3 — сертификат безопасности, вшитый в старые смартфоны на Android

Сертификат DST Root X3, поддержка которого должна была прекратиться в 2021 году, являлся для всех смартфонов с Android 7.1.1 и ниже системным. То есть зашитым в операционную систему по умолчанию без возможности самостоятельной замены. Единственный вариант заменить его – выпустить обновление с необходимыми изменениями. Но поскольку производители процессоров поддерживают их не дольше трёх лет, у владельцев потенциально затронутых устройств не было никакой надежды на апдейт.

К счастью для владельцев старых устройств, Let’s Encrypt продлила соглашение с IdenTrust, поставщиком цифровых подписей для сертификатов безопасности. Это значит, что действие сертификата DST Root X3 будет продлено, а пользователи смогут и дальше пользоваться сайтами в интернете без ограничений. Получается, что им больше не нужно ждать ни обновлений с обновлённым сертификатом безопасности, ни перепрошивать свои аппараты самостоятельно на кастомные прошивки, ни использовать альтернативные браузеры со встроенными сертификатами.

Читайте также:  Настройка видеорегистратора для андроид

Не открывается сайт на Android. Что делать

Firefox — едва ли не единственный браузер со встроенными сертификатами безопасности

Впрочем, даже если бы поддержка сертификата DST Root X3 действительно прекратилась, большой беды всё равно бы не произошло. Несмотря на то что сертификаты являются встроенным системным компонентом Android, существуют браузеры, у которых есть собственный набор сертификатов. То есть даже если бы DST Root X3 лишился поддержки, пользователи Android всё равно смогли бы продолжать пользоваться интернетом как ни в чём не бывало. Главное установить подходящий браузер. В нашем случае это Mozilla Firefox – наиболее популярный и авторитетный веб-обозреватель, имеющий версии и для ПК, и для мобильных платформ.

Вообще, держать Firefox у себя можно просто на всякий случай в качестве подстраховки, особенно, если ваш смартфон уже не получает обновлений. Ведь никогда не знаешь, в какой момент сертификат безопасности, который используется системой по умолчанию, лишится поддержки и прекратит обеспечивать вас доступом к нужным вам сайтам. А, учитывая, что количество веб-ресурсов, для которых сертификаты являются проводниками, измеряются десятками и сотнями миллионов, Firefox про запас уже не выглядит как прихоть.

Источник

Let’s Encrypt предложила вариант продления срока службы своих сертификатов в старых версиях Android

В Let’s Encrypt рассказали, как избежать проблемы истекающего корневого сертификата на устройствах со старыми версиями Android. В 2021 году завершается срок соглашения Let’s Encrypt с IdenTrust, поэтому браузеры и ОС без корневого сертификата Let’s Encrypt больше не будут работать с сайтами и службами, которые используют этот сертификат. Проблема коснется устройств с версиями Android до 7.1.1 Nougat.

Согласно официальной статистике Google, 33,8% активных пользователей Android используют более ранние версии. Это примерно 845 млн человек.

Теперь Let’s Encrypt объявил, что нашел решение, которое позволит старым смартфонам Android работать, продолжая использовать просроченный сертификат от IdenTrust. В центре сертификации пояснили, что IdenTrust согласился выпустить трехлетнюю перекрестную подпись для Let’s Encrypt ISRG X1 и их собственного корневого центра сертификации DST X3. Решение будет работать благодаря тому, что в Android не обеспечивается соблюдение сроков истечения действия сертификатов доверия. ISRG и IdenTrust уже обратились к аудиторам, чтобы убедиться в отсутствии проблем.

Срок действия самоподписанного сертификата, который представляет собой пару ключей DST Root CA X3, истекает. Но корневые хранилища браузера и ОС не содержат сертификатов как таковых, а включают якоря доверия и стандарты для проверки. Android намеренно решил не использовать поле notAfter для якорей доверия. ISRG Root X1 не был добавлен в старые доверенные хранилища Android, а DST Root CA X3 не был удален. То есть, он может без проблем выдать перекрестную подпись, срок действия которой превышает срок действия его собственного самоподписанного сертификата.

Let’s Encrypt начнет предоставлять сертификаты ISRG Root X1 и DST Root CA X3, которые обеспечат «бесперебойное обслуживание всех пользователей и предотвратят потенциальные сбои».

Таки образом, ранее запланированная отмена режима перекрестной подписи начнется 11 января 2021 года. Одновременно пользователям предоставят новую цепочку по умолчанию. Срок действия новой перекрестной подписи истекает в начале 2024 года.

Ранее пользователям предлагали другой вариант решения проблемы. Они могли установить Firefox, который использует собственное хранилище сертификатов. Однако этот шаг решал проблему браузеров, но не клиентов или функций.

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

Источник

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