Для разработчиков Android, которые используют собственные ключи подписи, цифровой отпечаток сертификата SHA-256 – это уникальный криптографический идентификатор приложения. В этом руководстве описаны три способа получить такой отпечаток из подписанного APK-файла или исходного хранилища ключей.
Как получить отпечаток сертификата SHA-256 из APK-файла
Указанные ниже способы подходят, если у вас есть подписанный APK-файл, но нет доступа к исходному хранилищу ключей или его паролям.
Способ 1А. С помощью инструмента apksigner (рекомендуется для APK-файлов)
Инструмент apksigner предлагает самый современный и надежный способ извлечь информацию о подписи из APK-файла, независимо от того, какая используется схема подписи: V1, V2, V3 или V4.
Шаг 1. Определите местоположение apksigner
(Пример: /Users/username/Library/Android/sdk/build-tools/34.0.0/apksigner)
Шаг 2. Выполните команду
Откройте терминал или командную строку, перейдите в каталог, где находится APK-файл, и выполните следующую команду:
apksigner verify --print-certs <path/to/your/app.apk>
Шаг 3. Найдите отпечаток сертификата SHA-256
В выводе команды будут приведены сведения о сертификатах для каждой подписавшей стороны. Найдите метку дайджеста SHA-256:
Дайджест SHA-256 сертификата подписавшей стороны 1:
a32a43cd459f7ce6b82c552f5d876989d53e6af1c0b2d35fb677b51a1dc4f0e5
Длинная строка шестнадцатеричных символов, разделенных двоеточиями, – это цифровой отпечаток сертификата SHA-256.
Способ 1Б. Использование утилиты keytool с APK-файлом
Шаг 1. Найдите keytool и APK
Узнайте, где находятся утилита keytool, которая входит в установку JDK, и подписанный APK-файл.
Шаг 2. Выполните команду
Используйте следующую команду, указав подписанный APK-файл в качестве хранилища ключей:
keytool -printcert -jarfile <path/to/your/app.apk>
Шаг 3. Найдите отпечаток сертификата SHA-256
В выходных данных будет раздел Certificate fingerprints (Цифровые отпечатки сертификатов). Найдите строку SHA-256.
Как получить отпечаток сертификата SHA-256 из файла хранилища ключей
Это стандартный способ извлечения отпечатка сертификата из исходного файла хранилища ключей в любой операционной системе.
Это стандартный способ извлечения отпечатка сертификата из исходного файла хранилища ключей в любой операционной системе.
Способ 2. С помощью стандартной утилиты keytool
Шаг 1. Найдите keytool и файл хранилища ключей
Вам потребуется:
- Файл хранилища ключей. Файл, используемый для подписи приложения (.jks или .keystore). Вам нужно знать путь к нему, а также пароль и псевдоним ключа внутри.
- Утилита keytool. Она входит в состав Java Development Kit (JDK).
| Операционная система | Местоположение keytool |
| Windows | Обычно утилита находится в каталоге bin установки JDK (например, C:\Program Files\Java\jdk-xx\bin\). |
| macOS и Linux | Обычно утилита доступна в терминале после установки JDK. |
Шаг 2. Перейдите в нужный раздел
Откройте терминал или командную строку. Чтобы упростить следующий шаг, перейдите в каталог, содержащий файл хранилища ключей:
# Это пример. Замените этот путь на фактический.
cd /path/to/your/keystore/directory
Шаг 3. Выполните команду
Чтобы получить подробную информацию о сертификате, выполните следующую команду:
Примечание. Если утилита keytool не распознаётся, необходимо указать полный путь к ней (например, /path/to/jdk/bin/keytool).
keytool -list -v -keystore [your_keystore_name.jks] -alias [your_key_alias]
- Замените [your_keystore_name.jks] на фактическое название файла.
- Замените [your_key_alias] псевдонимом ключа подписи (например, mykey).
Шаг 4. Найдите отпечаток SHA-256
Утилита запросит пароль от хранилища ключей. После ввода данных в выводе команды будут показаны сведения о сертификате.
Найдите раздел Certificate fingerprints (Цифровые отпечатки сертификатов):
Certificate fingerprints:
SHA1: XX:XX:XX:XX:XX:…
SHA256: 0A:B3:C6:D9:E2:F5:81:B4:C7:D0:E3:F6:92:A5:B8:C1:D4:E7:F0:83:96:A9:BC:D1:E4:F7:03:96:A9:BC:D1:E4
Signature algorithm name: SHA256withRSA
…
Длинная строка шестнадцатеричных символов, разделенных двоеточиями, после SHA256: – это цифровой отпечаток открытого сертификата SHA-256.