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