Android 6.0.1 — установка сертификата ISRG Root X1 |

Android 6.0.1 — установка сертификата ISRG Root X1 | Сертификаты

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

Для организации такого рода архитектуры удалённого доступа довольно часто используются сертификаты, которые подписаны центрами не входящими в список стандартных. Почему 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»).

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

Необходимо подключить к Вашему проекту Security.Framework


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

Про сертификаты:  Сертификат на нож: нужен ли, как и на какие виды делать, какая информация должна быть

Итак реализуем функецию extractIdentityAndTrust.

OSStatus extractIdentityAndTrust(CFDataRef inP12data, SecIdentityRef *identity)
{
    OSStatus securityError = errSecSuccess;
    
    CFStringRef password = CFSTR("");
    const void *keys[] = { kSecImportExportPassphrase };
    const void *values[] = { password };
    
    CFDictionaryRef options = CFDictionaryCreate(NULL, keys, values, 1, NULL, NULL);
    
    CFArrayRef items = CFArrayCreate(NULL, 0, 0, NULL);
    securityError = SecPKCS12Import(inP12data, options, &items);
    
    if (securityError == 0) {
        CFDictionaryRef myIdentityAndTrust = CFArrayGetValueAtIndex(items, 0);
        const void *tempIdentity = NULL;
        tempIdentity = CFDictionaryGetValue(myIdentityAndTrust, kSecImportItemIdentity);
        *identity = (SecIdentityRef)tempIdentity;
    }
    
    if (options) {
        CFRelease(options);
    }
    
    return securityError;
} 

Производим извлечение при помощи функции SecPKCS12Import, незабываем указать пароль к серитификату.

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

- (BOOL)connection:(NSURLConnection *)connection canAuthenticateAgainstProtectionSpace:(NSURLProtectionSpace *)protectionSpace
{
    return YES;
}

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

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

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

Добавляем isrg root x1 в список доверенных сертификатов на android 6.0

Первым делом нужно установить на телефон PIN-код или графический код. Android 6.0.1 позволяет устанавливать собственные сертификаты только с блокировкой экрана. При отключении PIN-кода или графического кода персональные сертификаты будут удалены (не проверял). В любом случае, при попытке добавить сертификат вас попросят включить блокировку экрана.

Идём в Настройки → Экран блокировки и защита → Тип блокировки экрана. Здесь устанавливаем PIN-код или другой способ блокировки.

Идём в Настройки → Экран блокировки и защита → Другие параметры безопасности.

Мотаем вниз и видим нужные нам пункты:

  • Сертификаты безопасности
  • Сертификаты пользователя
  • Установить из памяти
  • Удалить учётные данные

Нажимаем Сертификаты безопасности, находим протухший сертификат Digital Signature Trust Co. (DST Root CA X3) и отключаем его, чтобы телефон не пытался использовать эту цепочку.

Скачиваем сертификат ISRG Root X1 и Let’s Encrypt R3 в формате PEM. Я буду ставить оба сертификата.

Как установить сертификат 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 6.0

Посмотрим, какие сейчас используются сертификаты. Нажимаем на значок слева от URL — ⓘ. Открывается окно “Незащищённое подключение”.

Для просмотра сертификатов нажимаем ссылку “Данные сертификата”.

Сертификат выдан Let’s Encrypt. Срок действия ещё не вышел. Посмотрим промежуточный сертификат, стрелка вниз.

Видно только промежуточный сертификат R3, выбираем.

Этот сертификат выдан DST Root CA X3, срок действия которого, как мы знаем, истёк. Более того, срок сертификата R3 тоже истёк. И на этом браузер останавливается и не доверяет сайту. А всё потому, что проверка пошла по основной цепочке. Альтернативная цепочка не была задействована, потому что сертификат ISRG Root X1 неизвестен Android.

Про сертификаты:  Шаг 6. Загрузка дистрибутивов и создание инсталляционных пакетов

Ручная установка сертификата на устройствах с android 11 | adguard knowledgebase

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

Android 6.0.1 — установка сертификата ISRG Root X1 |

Чтобы вручную установить сертификат 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.

Заключение.

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

Полезная информация: Certificate, Key, and Trust Services Tasks for iOSОписание PKCS12 Creating .NET web service with client certificate authenticationCertificate Authentication in asp.netJava 2-way TLS/SSL (Client Certificates) and PKCS12 vs JKS KeyStores

Спасибо за внимание!

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