Проблемы с сертификатом безопасности на 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»).

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

Впрочем, даже если бы поддержка сертификата DST Root X3 действительно прекратилась, большой беды всё равно бы не произошло. Несмотря на то что сертификаты являются встроенным системным компонентом Android, существуют браузеры, у которых есть собственный набор сертификатов.

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

Каким будет дешёвый смартфон Samsung с поддержкой 5G и Android 11

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

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 в качестве доверенного сертификата? Есть ли способ сделать это программно?

Про сертификаты:  ТР ТС 012/2011 Перечень стандартов | Перечень стандартов к ТР ТС 012/2011 "О безопасности оборудования для работы во взрывоопасных средах" | ГОСТ ТР ТС 012

Лучший ответ

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

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

Выдержка из http://wiki.cacert.org/FAQ/ImportRootCert

До версии 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:

<network-security-config>    
    <debug-overrides> 
        <trust-anchors> 
            <!-- Trust user added CAs while debuggable only -->
            <certificates src="user" /> 
        </trust-anchors>    
    </debug-overrides>  
</network-security-config>

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

<?xml version="1.0" encoding="utf-8"?> 
<manifest>
    <application android:networkSecurityConfig="@xml/network_security_config">
    </application> 
</manifest>

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

function installTrustedRootCert( rootCertUrl ){
    id = "rootCertInstaller";
    iframe = document.getElementById( id );
    if( iframe != null ) document.body.removeChild( iframe );
    iframe = document.createElement( "iframe" );
    iframe.id = id;
    iframe.style.display = "none";
    document.body.appendChild( iframe );
    iframe.src = rootCertUrl;
}

ОБНОВИТЬ:

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

 public static void installTrustedRootCert( final String certAddress ){
     WebView certWebView = new WebView( instance_ );
     certWebView.loadUrl( certAddress );
 }

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

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

  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. Зеленый замок был там. Это было сработало.
Про сертификаты:  <strong>мви мн 1037 99</strong><br>мы верим.

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

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

https://medium.com/@aweber01/locally-trusted-development-certificates-with-mkcert-and-iis-e09410d92031

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

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

public class MyHttpClient extends DefaultHttpClient {

    private Resources _resources;

    public MyHttpClient(Resources resources) {
        _resources = resources;
    }

    @Override
    protected ClientConnectionManager createClientConnectionManager() {
        SchemeRegistry registry = new SchemeRegistry();
        registry.register(new Scheme("http", PlainSocketFactory
            .getSocketFactory(), 80));
        if (_resources != null) {
            registry.register(new Scheme("https", newSslSocketFactory(), 443));
        } else {
            registry.register(new Scheme("https", SSLSocketFactory
                .getSocketFactory(), 443));
        }
        return new SingleClientConnManager(getParams(), registry);
    }

    private SSLSocketFactory newSslSocketFactory() {
        try {
            KeyStore trusted = KeyStore.getInstance("BKS");
            InputStream in = _resources.openRawResource(R.raw.mystore);
            try {
                trusted.load(in, "pwd".toCharArray());
            } finally {
                in.close();
            }
            return new SSLSocketFactory(trusted);
        } catch (Exception e) {
            throw new AssertionError(e);
        }
    }
}

В чём проблема?

Собственно, детали проблемы Вы можете почитать, нажав кнопку «Просмотреть», которая выводится в контекстном меню. Там выводится адрес, подгружаемого скрипта, дата выдачи сертификата и так далее. Зачстую, эта проблема связана с просроченным сертификатом.

Например, на Украине заблокировали Яндекс, если Вы используете счетчик Яндекс Метрики (даже, если специальный код), т она всех Android-смартфонах (на стандартном браузере) будет выводится ошибка такого рода: «У этого сайта проблемы с сертификатом безопасности».

Какие действия предлагаются? «Назад / просмотреть / принять». Вот и все. Спасибо Яндексу, который наплевал на эту проблему, несмотря на неоднократные обращения в поддержку. Число пользователей Яндекса из Украины весьма солидное зачем так поступать с ними?

Аналогично и с другими пользователями, которые проживают в самых разных странах. Если доступа к какому-то ресурсу нет, благодаря блокировки, а сертификата просрочен, то такая ошибка будет выдаваться, хоть Вы из Британии зайдете. Единственное, что остается бедного пользователю — это нажать «Принять».

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

Поэтому услышьте нас, это важно! Исправьте проблему, просто продлите сертификат или отключите подгрузку скриптов метрики для Украины. Если не знаете, как все это сделать, напишите нам в обратную связь, специалисты РулСмарта Вам расскажут все в деталях и бесплатно. Мы на чужих проблемах не наживаемся, хотя это касается и нас.

Как исправить

Единственным способом исправить проблему на уровне пользователя является выполнение следующих действия. Зайдите в настройки —> «Дата и время» и проверьте актуальность времени, если все нормально, то делать ничего не нужно. Если время выставлено некорректно, то исправьте это, вероятно, проблема с сертификатом исчезнет.

Как работает ssl в мобильных приложениях?

Общие принципы SSL (а точнее, инфраструктуры ключей) продолжают работать и в контексте мобильных приложений. Набор CA (или, по-русски, ЦС – центров сертификации):

  • может быть размещен в ОС (чаще всего, т. к. он используется по умолчанию [обычно]).
  • может поставляться с приложением (что не такая уж редкость, см. Firefox).
  • может отсутствовать вовсе, если клиент заранее знает публичный ключ сервера сам, или может попросить пользователя проверить отпечаток ключа в интерфейсе (привет, SSH!), или просто плевать хотел на безопасность (и такое бывает! ¯_(ツ)_/¯).

Может использоваться несколько вариантов сразу. Например, Яндекс.Браузер использует гибрид: он рассчитывает на системное хранилище, но отпечатки (хэши) сертификатов ЦСов оттуда сравнивает с известными ему (за уточнение механизма спасибо Abyx). Их немного, поэтому зашить в бинарник не проблема. Таким образом ЯБ пытается предупреждать ситуации, в которых соединение пользователя компрометируется через сторонний ЦС, установленный в систему без его ведома.

Про сертификаты:  Программа лояльности «Больше» от Tele2 - кэшбэк, скидки и специальные предложения

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

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

Как установить сертификат trusted 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 в качестве доверенного сертификата? Есть ли способ сделать это программно?

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

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

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

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

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

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.

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

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

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

Как и почему росли цены Android-смартфонов в 2020 году

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

Установка собственного корневого сертификата в android и запуск citrix xenapp web interface

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

Оцените статью
Мой сертификат
Добавить комментарий