SSL для мобильного приложения: сертификат для API и закрепление ключа, термины и чек-лист
Подробности, цифры, термины и чек-лист по теме «SSL для мобильного приложения: сертификат для API и закрепление ключа». Страница справочника целиком: SSL для мобильного приложения.
Коротко о теме
SSL для мобильного приложения: сертификат на домен API, цепочка без ошибок, Android 9 и iOS ATS, закрепление ключа в network_security_config.
Подробности по разделам
Какой SSL-сертификат нужен серверу мобильного приложения
Подойдёт обычный DV-сертификат на домен API. Let's Encrypt устанавливается так же, как для сайта, и шифрует ровно так же, как платный. Платный берут ради гарантийной выплаты или сертификата с проверкой организации, а не для работы приложения.
Почему приложение не подключается, хотя сайт в браузере открывается
Если команда выводит 1, сервер отдаёт один сертификат без цепочки. Для Let's Encrypt правильно 2 и больше: файл fullchain.pem содержит оба. Подробнее: проверка цепочки сертификатов и устройство цепочки.
Как проверять приложение с локальным https при разработке
В релизной сборке раздел игнорируется. Не отключайте проверку сертификата в коде и не принимайте любые сертификаты: приложение останется без защиты, а такой код легко попадает в релиз.
Что такое закрепление сертификата и нужно ли оно приложению
Для каталога или новостей хватает обычной проверки. Цена выше пользы там, где ключ меняют часто. У приложений на Android закрепление включается в той же конфигурации: Хеш открытого ключа получают из сертификата, а запасной берут от ключа, который сейчас на сервере не используется: Документация Android советует всегда добавлять запасной ключ: без него смена ключа или центра ломает соединение, пока не выйдет обновление приложения.
Ключевые цифры
- В iOS закрепление включается ключом NSPinnedDomains в Info.plist (iOS 14 и новее).
Термины на странице
- Цепочка сертификатов
- Цепочка сертификатов связывает сертификат сайта с корневым через промежуточные. Без промежуточного часть браузеров покажет ошибку.
- PEM
- PEM это текстовый формат файлов сертификатов и ключей, файлы .crt и .key часто в нём же.
- Самоподписанный сертификат
- Самоподписанный сертификат выпускает сам владелец. Браузеры ему не доверяют, он годится для тестов.
- Продление домена
- Продление это оплата домена на следующий срок. Цена продления часто выше цены регистрации.
- Root-доступ
- Root-доступ это права администратора на сервере: можно ставить любые программы и менять любые настройки.
- Certbot
- Certbot это программа, которая получает и продлевает сертификаты Let's Encrypt на сервере.
- DV, OV, EV
- DV подтверждает только владение доменом, OV и EV ещё и проверяют компанию. Шифрование у них одинаковое.
- TLS
- TLS это протокол шифрования, на котором работает HTTPS. Название SSL осталось по привычке.
Что проверить
- Выпустите сертификат после того, как домен указывает на сервер.
- Проверьте, что установлена вся цепочка сертификатов.
- Включите перенаправление с HTTP на HTTPS.
- Выберите конфигурацию по памяти и диску под задачу, процессор обычно вторичен.
- Проверьте тип виртуализации: KVM даёт свою систему и гарантированные ресурсы.
- Уточните, входит ли IPv4 и сколько стоит трафик сверх пакета.