О закрытых ключах для GitHub Apps
После создания GitHub Appнеобходимо создать закрытый ключ, чтобы выполнять запросы к API GitHub в качестве самого приложения. Например, для запроса маркера доступа к установке требуется закрытый ключ для подписи веб-маркера JSON (JWT). Дополнительные сведения см. в разделе "Создание веб-маркера JSON (JWT) для приложения GitHub"
Вы можете создать несколько закрытых ключей, а затем менять скомпрометированные или потерянные ключи, чтобы избежать простоя. Чтобы убедиться, что закрытый ключ соответствует открытому ключу, см. раздел "Проверка закрытых ключей".
Закрытые ключи не истекают и вместо этого необходимо отменить вручную. Дополнительные сведения о том, как отозвать закрытый ключ, см. в разделе "Удаление закрытых ключей".
Для защиты данных GitHub Apps необходимо сохранить закрытые ключи. Дополнительные сведения см. в разделе "Хранение закрытых ключей".
Создание закрытых ключей
Чтобы создать закрытый ключ, выполните следующие действия.
- В правом верхнем углу любой страницы на GitHubщелкните фото профиля.
- Перейдите к настройкам учетной записи.
- Для приложения, принадлежащих личная учетная запись, нажмите кнопку "Параметры".
- Для приложения, принадлежащих организации:
- Щелкните Your organizations (Ваши организации).
- Справа от организации нажмите кнопку "Параметры".
- На левой боковой панели щелкните Параметры разработчика.
- На левой боковой панели щелкните GitHub Apps.
- Рядом с GitHub App, для которого требуется создать закрытый ключ, нажмите кнопку "Изменить".
- В разделе "Закрытые ключи" нажмите кнопку "Создать закрытый ключ".
- Вы увидите скачанный на компьютер закрытый ключ в формате PEM. Не забудьте сохранить этот файл, поскольку GitHub хранит только открытую часть ключа. Дополнительные сведения о безопасном хранении ключа см. в разделе "Хранение закрытых ключей".
Примечание. Если вы используете библиотеку, для которой требуется определенный формат файлов, скачанный файл PEM будет иметь формат PKCS#1 RSAPrivateKey
.
Проверка закрытых ключей
GitHub создает отпечаток для каждой пары закрытого и открытого ключей с помощью хэш-функции SHA-256. Вы можете проверить, соответствует ли закрытый ключ открытому ключу, хранящемуся в GitHub, создав отпечаток закрытого ключа и сравнив его с отпечатком в GitHub.
Для проверки закрытого ключа выполните следующее.
-
Найдите отпечаток для пары закрытых и открытых ключей, которую вы хотите проверить в разделе "Закрытые ключи" страницы параметров для GitHub App. Дополнительные сведения см. в разделе "Создание закрытых ключей".
-
Создайте отпечаток закрытого ключа (PEM) локально с помощью следующей команды:
openssl rsa -in PATH_TO_PEM_FILE -pubout -outform DER | openssl sha256 -binary | openssl base64
-
Сравните результаты локально созданного отпечатка с отпечатком, который отображается в GitHub.
Удаление закрытых ключей
Вы можете удалить потерянный или скомпрометированный закрытый ключ, удалив его, но перед удалением существующего ключа необходимо повторно создать новый ключ.
- В правом верхнем углу любой страницы на GitHubщелкните фото профиля.
- Перейдите к настройкам учетной записи.
- Для приложения, принадлежащих личная учетная запись, нажмите кнопку "Параметры".
- Для приложения, принадлежащих организации:
- Щелкните Your organizations (Ваши организации).
- Справа от организации нажмите кнопку "Параметры".
- На левой боковой панели щелкните Параметры разработчика.
- На левой боковой панели щелкните GitHub Apps.
- Рядом с GitHub App, для которого требуется удалить закрытый ключ, нажмите кнопку "Изменить".
- В разделе "Закрытые ключи" справа от закрытого ключа, который требуется удалить, нажмите кнопку "Удалить".
- При появлении запроса подтвердите удаление закрытого ключа, нажав кнопку "Удалить". Если ваш GitHub App имеет только один ключ, необходимо создать новый ключ перед удалением старого ключа. Дополнительные сведения см. в разделе "Создание закрытых ключей".
Хранение закрытых ключей
Закрытый ключ — это самый ценный секрет для GitHub App. Попробуйте сохранить ключ в хранилище ключей, например Azure Key Vault, и сделать его только для входа. Это помогает гарантировать, что закрытый ключ не будет потерян. После отправки закрытого ключа в хранилище ключей он никогда не может быть прочитан. Его можно использовать только для подписывания вещей, а доступ к закрытому ключу определяется правилами инфраструктуры.
Кроме того, ключ можно сохранить в качестве переменной среды. Это не так сильно, как хранение ключа в хранилище ключей. Если злоумышленник получает доступ к среде, он может считывать закрытый ключ и получать постоянную проверку подлинности как GitHub App.
Не следует жестко кодировать закрытый ключ в приложении, даже если код хранится в частном репозитории.
Дополнительные сведения см. в разделе Рекомендации по созданию приложения GitHub.